Je dois donner une haute préséance et une associativité gauche à l'application de fonction dans mon analyseur OCaml. J'ai un tas de jetons différents pour qu'il corresponde tels quePriorité d'application OCaml et associativité
%token LET REC EQ IN FUN ARROW
%token IF THEN ELSE
%token PLUS MINUS MUL DIV LT LE NE AND OR
%token LPAREN RPAREN
et j'ai donné toutes ces priorité et l'associativité en utilisant %left
, right
... Cependant, depuis exp
que j'utilise pour correspondre avec ISN » t un jeton, je me demandais comment je le ferais dans ce cas:
exp:
| exp exp { App($1,$2)}
J'ai tous mes matchs pour exp
, na pas fait un tas de différents exp2s de EXP1 et ainsi de suite et que vous voulez savoir s'il est possible de donner exp
exp
la plus haute priorité a Sd gauche assoc.
J'ai posté ceci sur un autre forum pour ma classe et a obtenu:
Vous pouvez associer un jeton fictif avec les règles d'application de la fonction comme suit:
rule: .... %precc DUMMY_FUN_APP
Et puis spécifiez associativité en utilisant% à gauche et la jeton fictif.
Mais je ne suis pas vraiment sûr de ce que cela signifie, donc si quelqu'un pourrait élaborer sur ce sujet ou me donner une autre solution qui serait géniale.
J'ai fini par utiliser la version avec plusieurs expressions, oui j'utilisais yacc –