我想知道下面的解析器规范哪里出错了。解析器旨在解析和评估像 2+3*4 到 14 这样的表达式。它将与 FsLexYacc 一起运行。
%{
%}
%token <int> CSTINT
%token PLUS MINUS MUL
%token LPAR RPAR
%token EOF
%left MINUS PLUS /* lowest precedence */
%left TIMES DIV /* highest precedence */
%start Main
%type int Main
%%
Main:
Expr EOF { $1 }
;
Expr:
| CSTINT { $1 }
| MINUS CSTINT { - $2 }
| LPAR Expr RPAR { $2 }
| Expr MUL Expr { $1 * $3 }
| Expr PLUS Expr { $1+$3 }
| Expr MINUS Expr { $1-$3 }
;
我得到了错误
ExprPar.fsy(18,0): error: Unexpected character '%'%
第 18 行是指“Main”之前的行。错误在哪里?