context undo lex ignore /[ ]+/ literal `; token NL /'\n'/ token id /[a-zA-Z_]+/ end def item [id] def start [item* `; NL] end Undo: undo = new undo() parse Input: undo::start( Undo )[ stdin ] print[ @Input ] ##### IN ##### a b; ##### EXP ##### a b;