如何在 Bison 自己的编译器中制作多条指令?
How to make multiple instructions in own compiler in Bison?
我正在尝试在我的编译器中执行多条指令。
为了简单起见,我只举一个小例子。
什么是工作:
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 */
;
这匹配零个或多个语句。如果你想至少需要一个,你应该用 statement
.
替换空的 case
我正在尝试在我的编译器中执行多条指令。 为了简单起见,我只举一个小例子。 什么是工作:
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 */
;
这匹配零个或多个语句。如果你想至少需要一个,你应该用 statement
.