def test_quasiquote(self): assert p("`1") == pair(sym('quasiquote'), pair(1, None)) assert p("`,1") == pair(sym('quasiquote'), pair(pair(sym('unquote'), pair(1, None)), None)) assert p("`(1 ,(+ 1 5) ,@(list 1 2))") == \ pair(sym("quasiquote"), pair(pair(1, pair(pair(sym("unquote"), pair(pair(sym("+"), pair(1, pair(5, None))), None)), pair(pair(sym("unquote-slicing"), pair(pair(sym("list"), pair(1, pair(2, None))), None)), None))), None))
def test_quote(self): assert p("'1") == pair(sym('quote'), pair(1, None)) assert p("''1") == pair(sym('quote'), pair(pair(sym('quote'), pair(1, None)), None))
def test_symbol(self): assert p('foo') == sym('foo') assert p('foo123') == sym('foo123') assert p('string->number') == sym('string->number') assert p('number?') == sym('number?') assert p('...') == sym('...')