Логично было бы описать синтаксис командной строки при помощи EBNF.
Ну EBNF — это стандарт, а теория компиляции у нас вообще одна — если не регэкспы, так БНФ.
Как описывать — примерно понятно:
https://stackoverflow.com/questions/2599649/how-to-correctly-formalize-the-command-line-usage-of-gnu-linux-commands
https://stackoverflow.com/questions/16331973/grammar-for-linux-command-line-with-yacc-and-lex
Тем не менее, я нигде не видел, чтобы к разбору аргументов командной строки подходили именно таким способом
(то есть формально описывая грамматику с обработкой ошибок
и генерируя парсер, который выдаёт внятную диагностику)
А вы видели?