Разделение списка по eol при разборе ocaml

Я определил несколько операторов, за которыми следует список выражений в моем компиляторе. Я использую Менгир для разбора. Как правило, когда лексинг EOL это делает это:| eol { incr_linenum lexbuf; read lexbuf }Тем не менее, я хотел бы иметь возможность разобрать это:

stmt;
stmt;
stmt;
expr
expr
expr

stmt определяется следующим образом:

stmt :
| ...
| stmt SEMICOLON

и моя программа как эта:

prog :
| stmt; expr list

Я хотел бы expr быть интерпретированным как список expr, Есть ли способ сделать это? Или мой список должен быть разделен другими символами?

1 ответ

Решение

Как указано в руководстве (раздел 5.4), вы можете легко указать список без разделителей:

prog:
| stmt; list(expr)
Другие вопросы по тегам