1

我在编译器中定义了一些语句,后跟表达式列表。我正在使用 Menhir 进行解析。通常在进行词法分析时会这样做EOL| eol { incr_linenum lexbuf; read lexbuf } 但是,我希望能够解析这个:

stmt;
stmt;
stmt;
expr
expr
expr

stmt定义如下:

stmt :
| ...
| stmt SEMICOLON

我的程序是这样的:

prog :
| stmt; expr list

我希望expr将 解释为 的列表expr。有没有办法做到这一点?还是我的列表必须用其他字符分隔?

4

1 回答 1

1

手册中所述(第 5.4 节),您可以轻松指定没有任何分隔符的列表:

prog:
| stmt; list(expr)
于 2018-05-21T00:37:14.687 回答