Разделение списка по 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)