Ocaml 解析器 "unterminated action" 错误

Ocaml parser "unterminated action" error

我是 OCaml 的新手,我正在尝试使用解析器生成器 - ocamllex、ocamlyacc 为特定语言创建解析器。当我试图编译我的 parser.mly 文件时,出现以下错误:

错误(标记为 =):

File "parser.mly", line 94: unterminated action
| id = IDENTIFIER { identifier id }
;

以下是 parser.mly 文件的摘录:

%{
  open Ast

  let identifier name = {
    Identifier.name = name;
  }
%}

%token <int> INT
%token <string> IDENTIFIER

%start monitor
%type <Ast.Expression.t> monitor

%%

ident:
  | id = IDENTIFIER { identifier id }
;

Ocamlyacc 不支持像这样给规则的各个部分命名。您要么需要使用 等,要么切换到支持此功能的 Menhir。