这是 OCaml 解析器的示例代码:
%{ open Ast %}
%token PLUS MINUS TIMES DIVIDE EOF
%token <int> LITERAL
%left PLUS MINUS
%left TIMES DIVIDE
%start expr
%type < Ast.expr> expr
%%
expr:
expr PLUS expr { Binop($1, Add, $3) }
| expr MINUS expr { Binop($1, Sub, $3) }
| expr TIMES expr { Binop($1, Mul, $3) }
| expr DIVIDE expr { Binop($1, Div, $3) }
| LITERAL { Lit($1) }
我也有扫描仪和 AST(抽象语法树)的代码。这里的 1 美元和 3 美元是什么意思?
附录: 我想为变量赋值。我还想将所有变量的值存储在一个数组中。我怎样才能做到这一点?