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 */
;
这匹配零个或多个语句。如果您至少需要一个,则应将空的大小写替换为语句