我需要在我的 OCaml 解析器中为函数应用程序提供高优先级和左关联性。我有一堆与之匹配的不同令牌,例如
%token LET REC EQ IN FUN ARROW
%token IF THEN ELSE
%token PLUS MINUS MUL DIV LT LE NE AND OR
%token LPAREN RPAREN
%left
我使用, ...给出了所有这些优先级和关联性,right
但是,由于exp
我用来匹配的不是令牌,所以我想知道在这种情况下我将如何做到这一点:
exp:
| exp exp { App($1,$2)}
我有我的所有匹配exp
项,没有制作一堆不同的 exp1 exp2s 等等,我想知道是否有可能给予exp
exp
最高优先级并留下关联。
我在另一个论坛上为我的班级发布了这个并得到了:
您可以将虚拟令牌与功能应用程序规则相关联,如下所示:
rule: .... %precc DUMMY_FUN_APP
然后使用 %left 和虚拟标记指定关联性。
但是我不确定这意味着什么,所以如果有人可以详细说明这一点或给我另一个很棒的解决方案。