Well, that's a horrendous typo.
make a bunch of test commands and refactor the arguments to validators and exec subs
Merge branch 'cmds' into parser-cmds-extend-grammar
enumerate cmd namespace collisions
these collision handlers are probably pretty close
oops
Merge branch 'cmds' into parser-cmds-extend-grammar
args to commands should be hashrefs, cuz that's what we'll get from the parser — no good reason to flatten it
there, we can error out of the ambiguity by simply listing it
don't want to have to escape the command names
never … changed this I guess.   Changed it elsewhere though.
bugged.  The parser generates the errors, we even said so in comments… so … don't print them here.
yeah, like this, probably
method for tag_optional
These aren't methods, they're just boring subs (functions), also, names can have ::, also, undef is just sub {1} — by name
moar error wrt function names (better to get it in the definition  than in the double-check building the parser)
partial framework for options parsing
return the right things
return something from the options productions ; and make sure we parse the whole line in command productions
nop