 (defn parse-tree
   [state]
   state)
+
+(defn pretty [parse]
+  (if (map? parse)
+    (into [] (cons (:tag parse) (map pretty (:content parse))))
+    parse))
 
 (comment 
 (require '[net.cgrand.parsley.lrplus :as l])

    (= :syntax-quote t) (unbalanced :open abstract-children) 
    (= :var t) (unbalanced :open-var abstract-children)
    (= :fn t) (concat (token :nest 0) (balanced :open-fn :close-fn abstract-children) (token :unnest 0))
    (= :deprecated-meta t) (unbalanced :open abstract-children)
    (= :unquote-splicing t) (unbalanced :open abstract-children)
    (= :unquote t) (unbalanced :open abstract-children)
    (= :string t) (token :string count)

(def open-char "\\")
(def symbol-exclusion #"[^\(\[\#\{\\\"\~\%\:\,\s\!\;\'\@\`;0-9]")
(def ^{:private true} prefixes
  #{open-list open-vector open-map open-set open-quote 
    open-meta open-deprecated-meta open-deref open-syntax-quote
    open-fn open-var open-string open-regex open-unquote-splicing
    open-unquote open-anon-arg open-keyword open-discard whitespace open-comment
    open-char})

