Это домашнее задание. Я хотел бы написать простой парсер для параметров командной строки Unix.
Во-первых, я хотел бы определить грамматику с помощью BNF.
Options = Option | Options, space, Option;
Option = OptionName | OptionName, OptionArguments;
OptionName = '--', any character excluding '-' | OptionName, any character;
OptionArguments = OptionArgument | OptionArguments, space, OptionArgument;
OptionArgument = any character excluding '-' | OptionArgument, any character;
(«любой символ» здесь - любой буквенно-цифровой символ).
Имеет ли это смысл? Следующий вопрос - как добавить «старые» опции Unix, которые начинаются с одного дефиса и могут быть сгруппированы (например, ls -lht
)