39 lines
1.2 KiB
Scheme
39 lines
1.2 KiB
Scheme
|
(begin
|
||
|
(assert-equal
|
||
|
'(displayln (+ 123 456))
|
||
|
(arcana/parse
|
||
|
(list
|
||
|
(cons 'TOKEN_ROUND_OPEN "(")
|
||
|
(cons 'TOKEN_IDENT "displayln")
|
||
|
(cons 'TOKEN_ROUND_OPEN "(")
|
||
|
(cons 'TOKEN_IDENT "+")
|
||
|
(cons 'TOKEN_NUM "123")
|
||
|
(cons 'TOKEN_NUM "456")
|
||
|
(cons 'TOKEN_ROUND_CLOSE ")")
|
||
|
(cons 'TOKEN_ROUND_CLOSE ")"))))
|
||
|
|
||
|
(assert-equal
|
||
|
'(quasiquote
|
||
|
(cons
|
||
|
(unquote (+ 12 34))
|
||
|
(unquote (+ 56 78))))
|
||
|
(arcana/parse
|
||
|
(list
|
||
|
(cons 'TOKEN_QUASI_QUOTE "`")
|
||
|
(cons 'TOKEN_ROUND_OPEN "(")
|
||
|
(cons 'TOKEN_IDENT "cons")
|
||
|
(cons 'TOKEN_QUASI_UNQUOTE ",")
|
||
|
(cons 'TOKEN_ROUND_OPEN "(")
|
||
|
(cons 'TOKEN_IDENT "+")
|
||
|
(cons 'TOKEN_NUM "12")
|
||
|
(cons 'TOKEN_NUM "34")
|
||
|
(cons 'TOKEN_ROUND_CLOSE ")")
|
||
|
(cons 'TOKEN_QUASI_UNQUOTE ",")
|
||
|
(cons 'TOKEN_ROUND_OPEN "(")
|
||
|
(cons 'TOKEN_IDENT "+")
|
||
|
(cons 'TOKEN_NUM "56")
|
||
|
(cons 'TOKEN_NUM "78")
|
||
|
(cons 'TOKEN_ROUND_CLOSE ")")
|
||
|
(cons 'TOKEN_ROUND_CLOSE ")"))))
|
||
|
)
|