pretty print patterns
This commit is contained in:
parent
3081af60b2
commit
df274799be
|
@ -47,7 +47,7 @@
|
|||
:ref (stringify (value :^value))
|
||||
:fn (string "fn " (value :name))
|
||||
:function (string "builtin " (string value))
|
||||
# XXX: pkg, fn
|
||||
# XXX: pkg
|
||||
))
|
||||
|
||||
(set stringify stringify*)
|
||||
|
@ -63,6 +63,25 @@
|
|||
:ref (string "ref:" (x :name) "{" (x :value) "}")
|
||||
(stringify x)))
|
||||
|
||||
(defn- show-patt [x]
|
||||
(case (x :type)
|
||||
:nil "nil"
|
||||
:bool (string (x :data))
|
||||
:number (string (x :data))
|
||||
:keyword (string ":" (x :data))
|
||||
:word (x :data)
|
||||
:placeholder (get-in x [:token :lexeme])
|
||||
:tuple (string "(" (string/join (map show-patt (x :data)) ", ") ")")
|
||||
:list (string "[" (string/join (map show-patt (x :data)) ", ")"]")
|
||||
:dict (string "#{" (string/join (map show-patt (x :data)) ", ") "}")
|
||||
:pair (string (show-patt (get-in x [:data 0])) " " (show-patt (get-in x [:data 1])))
|
||||
:typed (string (show-patt (get-in x [:data 1])) " as " (show-patt (get-in x [:data 0])))
|
||||
:interpolated (get-in x [:token :lexeme])
|
||||
:string (get-in x [:token :lexeme])
|
||||
(error "cannot show pattern of unknown type " (x :type))))
|
||||
|
||||
(defn- docstring [fnn] :todo)
|
||||
|
||||
(defn- conj-set [sett value]
|
||||
(def new (merge sett))
|
||||
(set (new value) true)
|
||||
|
|
|
@ -561,10 +561,12 @@
|
|||
|
||||
(do
|
||||
(set source `
|
||||
fn foo
|
||||
fn bar () -> foo ()
|
||||
fn foo () -> :foo
|
||||
bar ()
|
||||
fn foo {
|
||||
"a foo, a bar"
|
||||
() -> :foo
|
||||
(_) -> :bar
|
||||
}
|
||||
foo ()
|
||||
`)
|
||||
(def result (run))
|
||||
# (b/show result)
|
||||
|
|
|
@ -1134,21 +1134,13 @@
|
|||
|
||||
(do
|
||||
# (comment
|
||||
(def source `
|
||||
fn foo {
|
||||
() -> :clause
|
||||
}
|
||||
(def source `(foo as :bar, 12, :foo, _thing)
|
||||
`)
|
||||
(def scanned (s/scan source))
|
||||
(print "\n***NEW PARSE***\n")
|
||||
(def a-parser (new-parser scanned))
|
||||
(def parsed (script a-parser))
|
||||
|
||||
# (print (pp-ast parsed))
|
||||
# (pp scanned)
|
||||
(pp parsed)
|
||||
# (def cleaned (get-in parsed [:data 2]))
|
||||
# (pp cleaned)
|
||||
(def parsed (pattern a-parser))
|
||||
(print (show-patt parsed))
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user