нужен парсер командной строки, чтобы соответствовать моим требованиям

Это вопрос синтаксического анализатора командной строки C / C ++.

Я использовал парсеры командной строки, представленные в бойкий а также Увеличение, но я нашел их не удовлетворяющими. У меня есть два особых требования:

  1. несколько значений после одного ключа, так что я могу использовать файл glob в командной строке следующим образом:

    my_program --input dir/*.txt
    
  2. настраиваемый тип значения, например:

    typedef enum { FORMAT_A, FORMAT_B, FORMAT_C } InputFormat;
    InputFormat option_format;
    

Я хочу, чтобы мой пользователь мог указать формат в командной строке --format format_a, Синтаксическому анализатору необходимо разрешить настраиваемой функции обратного вызова распознавать строковое значение и устанавливать значение перечисления.

Похоже на то увеличение опоры 1 но нет 2. Он позволяет вам определять только дополнительный парсер, который пересекает токены один за другим, но не по парам KV. А также бойкий опоры 2 но нет 1. Это позволяет только несколько вызовов, как --input foo --input bar,

Больше либсов, которые поддерживают оба 1 а также 2? Или какие-либо предложения по расширенному использованию бойкий или же увеличение для достижения обоих 1 а также 2?

3

Решение

Повышение может фактически удовлетворить требование 2. Вам нужно будет создать своего собственного ребенка value_semantic с соответствующим синтаксическим анализатором и передать экземпляр этого в add_options вместо того, чтобы использовать типичный value<int>() механизм.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]