##### LM ##### context ctx i: int j: int k: int lex ignore /space+/ literal `* `( `) token id /[a-zA-Z_]+/ end def foo [id] def item [id] | [foo] | [`( item* `)] { i = 0 } def start [item*] end # ctx cons SP: parser [] SP.ctx = cons ctx [] send SP [stdin] Input: ctx::start = SP() print( Input ) ##### IN ##### a b c ( d e f ) ##### EXP ##### a b c ( d e f )