我正在尝试在我的编译器中实现多个指令。 为了简单起见,我只举一个小例子。 工作原理:
expr1;
什么行不通:
expr1; expr2;
语法看起来像这样:
%start expression
%%
expression
: first ';'
;
first
: first '+' second
| first '-' second
| second
;
second
: second '*' number
| second '/' number
| number
number
: NUM_INT
;
答案 0 :(得分:1)
您需要一个匹配多个语句的规则,您可以使用这样的递归来定义:
statements
: statements statement
| /* empty */
;
匹配零个或多个语句。如果您想要至少需要一个,则应将空案例替换为statement
。