Compiler construction 如何在Bison中自己的编译器中生成多条指令?

Compiler construction 如何在Bison中自己的编译器中生成多条指令?,compiler-construction,bison,flex-lexer,Compiler Construction,Bison,Flex Lexer,我试图在我的编译器中实现多条指令。 为了简单起见,我只举一个小例子。 工作原理: expr1; 什么不起作用: expr1; expr2; 文法看起来像这样: %start expression %% expression : first ';' ; first : first '+' second | first '-' second | second ; second : second '*' number | second

我试图在我的编译器中实现多条指令。 为了简单起见,我只举一个小例子。 工作原理:

expr1;
什么不起作用:

expr1; expr2;
文法看起来像这样:

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

您需要一个匹配多个语句的规则,并且可以使用如下递归定义该规则:

%start expression
%%
expression
    : first ';'
    ;
first
    : first '+' second
    | first '-' second
    | second
    ;
second
    : second '*' number
    | second '/' number
    | number
number
    : NUM_INT
    ;
statements
    : statements statement
    | /* empty */
    ;
这匹配零个或多个语句。如果您至少需要一个,则应将空的大小写替换为
语句