Simplifying assumptions for our purposes
Command line grammars fairly simple
Not recursive: can extract grammar without any tricks
The commands that we parse are not particularly long
Efficiency is not a problem: implementation can be kept simple