解析ocaml时用eol分隔列表
Separating a list by eol when parsing ocaml
我在我的编译器中定义了一些语句和表达式列表。我正在使用 Menhir 进行解析。通常在对 EOL
进行词法分析时,它会这样做:
| eol { incr_linenum lexbuf; read lexbuf }
但是,我希望能够解析这个:
stmt;
stmt;
stmt;
expr
expr
expr
stmt定义如下:
stmt :
| ...
| stmt SEMICOLON
我的程序是这样的:
prog :
| stmt; expr list
我希望 expr
被解释为 expr
的列表。有没有办法做到这一点?还是我的列表必须用其他字符分隔?
如 manual(第 5.4 节)所述,您可以轻松指定一个没有任何分隔符的列表:
prog:
| stmt; list(expr)
我在我的编译器中定义了一些语句和表达式列表。我正在使用 Menhir 进行解析。通常在对 EOL
进行词法分析时,它会这样做:
| eol { incr_linenum lexbuf; read lexbuf }
但是,我希望能够解析这个:
stmt;
stmt;
stmt;
expr
expr
expr
stmt定义如下:
stmt :
| ...
| stmt SEMICOLON
我的程序是这样的:
prog :
| stmt; expr list
我希望 expr
被解释为 expr
的列表。有没有办法做到这一点?还是我的列表必须用其他字符分隔?
如 manual(第 5.4 节)所述,您可以轻松指定一个没有任何分隔符的列表:
prog:
| stmt; list(expr)