lex args { literal '-' token file /^('-'|0)(^0)*/ } token word /(^0)+/ token zero /0/ lex opts { token single /[qvh]/ token with_opt /[oi]/ } 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 )