Как сделать несколько инструкций в собственном компиляторе в Bison? - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь реализовать несколько инструкций в моем компиляторе. Для простоты приведу лишь небольшой пример. Что работает:

expr1;

Что не работает:

expr1; expr2;

И грамматика выглядит так:

%start expression
%%
expression
    : first ';'
    ;
first
    : first '+' second
    | first '-' second
    | second
    ;
second
    : second '*' number
    | second '/' number
    | number
number
    : NUM_INT
    ;

1 Ответ

0 голосов
/ 01 мая 2018

Вам нужно правило, которое соответствует нескольким операторам, и вы можете определить это с помощью рекурсии следующим образом:

statements
    : statements statement
    | /* empty */
    ;

Это соответствует нулю или более утверждений. Если вам требуется хотя бы один, вам следует заменить пустой кейс на statement.

...