lex literal '-' token file /^('-'|0)(^0)*/ end token word /(^0)+/ token zero /0/ lex token single /[qvh]/ token with_opt /[oi]/ end def item [file zero] | ['-' single* zero] | ['-' with_opt zero? word zero] def args [word zero item*] cons ArgParser: parser [] ArgV: list ArgV = argv for A: str in ArgV send ArgParser [A '\0'] Args: args = ArgParser() print_xml( Args )