在解析ocaml时用eol分隔列表

时间:2018-05-20 23:49:13

标签: ocaml menhir

我已经定义了一些语句,后跟我的编译器中的表达式列表。我正在使用Menhir进行解析。通常当lexing EOL执行此操作时: | eol { incr_linenum lexbuf; read lexbuf } 但是,我希望能够解析这个:

stmt;
stmt;
stmt;
expr
expr
expr

stmt定义如下:

stmt :
| ...
| stmt SEMICOLON

和我的程序:

prog :
| stmt; expr list

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

1 个答案:

答案 0 :(得分:1)

manual(第5.4节)所述,您可以轻松指定不带任何分隔符的列表:

prog:
| stmt; list(expr)