Я пытаюсь выяснить способ парсинга следующих текстов
function() {body ...}
function(args_) {body...}
Должен ли я использовать одну и ту же структуру для обоих вариантов или это можно сделать только с одной структурой
struct function
{
std::string name_;
std::vector<std::string> args_;
statement_list body_;
};
Способ, которым я сейчас разбираю (как пропустить аргументы, если аргументов нет):
auto const identifier_def = raw[lexeme[(alpha | '_') >> *(alnum | '_')]];
auto const function_def =
lexeme["function" >> !(alnum | '_')] >> identifier
>> '(' >> ((identifier % ',') )>> ')'
>> '{' >> statement >> '}'
;
И я мог бы проанализировать вариант с аргументами, но не тот, без аргументов!
Я пытаюсь использовать что-то вроде оператора OR, но безуспешно.
Спасибо!