Skip to content
This repository has been archived by the owner on Feb 3, 2018. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
clojure.clj: added syntax-quote, better error messages
  • Loading branch information
joshua-choi committed Jan 5, 2010
1 parent a678748 commit a629fee
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions src/name/choi/joshua/fnparse/clojure.clj
Expand Up @@ -63,8 +63,9 @@
(->> content flatten (apply str))))

(def quoted-object
(complex [_ (lit \'), content #'object]
(list `quote content)))
(apply alt (map #(complex [_ (lit (key %)), content #'object]
(list (val %) content))
{\' `quote, \` `syntax-quote})))

(def character-name
(mapalt #(constant-semantics (mapconc (val %)) (key %))
Expand All @@ -90,14 +91,18 @@

(do-template [rule-name start-token end-token product-fn]
(def rule-name
(complex [_ (lit start-token), contents object-series, _ (lit end-token)]
(complex [_ (lit start-token)
contents object-series
_ (with-label (format "%s, object or comment" end-token)
(lit end-token))]
(product-fn contents)))
list-r \( \) list*
vector-r \[ \] vec
map-r \{ \} #(apply hash-map %)
set-inner-r \{ \} set)

(def object
(alt list-r vector-r map-r string-r quoted-object division-symbol character-r keyword-r special-symbol symbol-r decimal-number))
(with-label "object or comment"
(alt list-r vector-r map-r string-r quoted-object division-symbol character-r keyword-r special-symbol symbol-r decimal-number)))

(-> "[a b]" make-state object println)
(-> "[a b}" make-state object println)

0 comments on commit a629fee

Please sign in to comment.