Интересно, где приведенная ниже спецификация парсера пошла не так. Синтаксический анализатор стремится анализировать и оценивать выражение типа 2 + 3 * 4 до 14. Он должен запускаться с FsLexYa cc.
%{
%}
%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». Где ошибка?