Sat Nov 7 15:25:27 CET 2009

s-expression parser

Now, for the s-expression parser on top of the tokenizer.  Is it
possible to convert between the two formats without parsing, or is an
intermediate tree rep necessary?

It looks like this needs a tree rep to keep track of the paren
matching.  Alternatively, it could be tokenized to LP DOT RP and
parsed from that.

List    = LP Tail
Tail    = a:Datum Dot d:Datum RP         { $$= CONS(a,d) }
        | RP                             { $$= NIL }
        | d:Datum t:Tail                 { $$= CONS(d,t) }