методы анализа интерактивного ввода (например, оболочки)? - PullRequest
2 голосов
/ 18 сентября 2010

Я работаю над программой, которую можно использовать непосредственно из командной строки с параметрами и входными файлами, или полностью интерактивно, как оболочка. Для начального выполнения я использую Getopt GNU для разбора параметров командной строки.

При использовании файла я использую Flex и Bison. Это значительно упрощает синтаксический анализ, поскольку грамматика очень проста, но я не совсем уверен, как мне следует решать аспект оболочки. Я использовал библиотеки GNU readline и history прежде, когда я делал это, я полагался исключительно на strtok и множество сравнений с вложенными операторами switch. Это сработало, но я тоже выглядело как халтура ...

Есть ли лучший способ решить эту проблему?

Для ввода данных, который позволила бы оболочка, я думал о том, чтобы передать его напрямую во временный файл и снова использовать Flex и Bison, но для различных параметров (таких как параметры командной строки, которые Getopt сейчас анализирует для меня) есть лучший способ?

Я возился с идеей попытаться переработать мой getopt-код, поскольку он гибок для захвата всего, и если это не вариант, я мог бы принять его данные и передать их. Но я бы хотел второе мнение.

Спасибо

1 Ответ

0 голосов
/ 09 июля 2011

Просто напишите это на Python.Используйте модуль cmd для написания программы оболочки и используйте shlex для разбора ввода точно так же, как оболочка.

...