Анализ довольно сложной грамматики с помощью QCommandLineParser - PullRequest
0 голосов
/ 30 января 2020

Я пишу систему в Qt, которая должна запускаться из GUI или из командной строки. Система должна выполнять различные операции, и каждая операция может иметь различные параметры, некоторые обязательные и некоторые необязательные.

Например, операция-1 принимает одну строку, операция-2 принимает две строки и операция-3 принимает одну строка и одно или два необязательных целых числа. Итак, следующие командные строки являются действительными:

operation-1 string
operation-2 string1 string2
operation-3 string
operation-3 string -val1 123
operation-3 string -val2 123
operation-3 string -val1 123 -val2 456

Как мне go сделать это с помощью QCommandLineParser? Код, который я взял, по сути разбирает командную строку, чтобы получить первое слово, и вызывает одну из трех подпрограмм для обработки операции. Затем каждая из трех подпрограмм перестраивает таблицы синтаксического анализатора в соответствии с их заданным синтаксисом c. Это кажется мне уродливым, особенно потому, что есть некоторые другие флаги командной строки, которые можно использовать с одинаковым эффектом для каждой операции.

Это упрощенная система, иллюстрирующая мою проблему. Меня поражает, что вышеуказанную грамматику можно легко обработать, указав val1 и val2 в качестве параметров, а затем проверив в обработчиках, что ни одно из них не указано для operation-1 и operation-2. Однако я чувствую, что хотел бы, чтобы парсер командной строки сделал это для меня. Я ожидаю слишком много от QCommandLineParser или я что-то пропустил?

...