Я довольно новичок в Flex / Bison и пытаюсь разобрать строку в формате:
COMMAND ARG1, ARG2, ARGn (, ARGn+1, ARGn+2 ...);
так, что требуются аргументы 1, 2 и n, но n + 1, n + 2, ... необязательны без ограничения.
Как бы я это сделал в Flex / Bison?
Когда я определяю мою грамматику как:
args:
ARG
|
ARG COMMA args
;
var_command:
COMMAND ARG COMMA ARG COMMA args SEMICOLON
{
printf("arg1: %s, arg2: %s\n", $2, $4);
}
Я могу только (как указано выше) ссылаться на первые 2 аргумента, как мне ссылаться на то, что сопоставляется в определении args:
?
Я проверил грамматику и могу выдать любое количество аргументов, она соответствует правильно, она просто получает дескриптор этих данных, которые мне не хватает.