День добрый!
Пишу програмку, имеющую интерфейс командной строки (подобно ftp, gnuplot, gdb и т.д.). Встал вопрос о том, каким образом проводить разбор пользовательского ввода. Один из вариантов - использовать YACC/BISON, однако проблема в том, что параметры команд могут, в некоторых случаях иметь значение, совпадающее с именем другой команды. К примеру, есть команда help и есть команда show, требующая имени некоторой сущности. Тогда, вполне корректной была бы следующая конструкция:
show help.
Проблемы:
Лексемами являются не слова целиком, а отдельные символы, следовательно существенно усложняется грамматика языка. Это не смертельно, однако, хотелось бы найти более оптимальное решение.
В связи с этим такие вопросы:
1. Насколько вообще оправдан подход с использованием YACC/BISON?
2. Что делать? Оставить всё как есть или, к примеру, изменить сканер лексем, чтобы он выделял отдельные слова и изменить грамматику? Понятно, что это потребует введения "экранирования".
Всем ответившим по существу заранее благодарен.