0
Pourquoi la grammaire suivante ne reconnaît pas nat -> nat
mais reconnaît (nat -> nat)
et comment puis-je résoudre ce problème?Comment utiliser correctement les coercions de sorte qu'aucune parenthèse n'est nécessaire?
TNat . Typ4 ::= "nat" ;
TVoid . Typ4 ::= "<>" ;
TProd . Typ3 ::= SumType;
TProd . Typ2 ::= Typ2 "*" Typ3;
TArrow . Typ1 ::= Typ1 "->" Typ2;
coercions Typ 4;
Je suis heureux de voir que vous avez trouvé une solution. Pour donner un peu d'explication: à moins que vous ne [le définissiez explicitement] (http://bnfc.readthedocs.io/en/latest/lbnf.html#entry-point-pragmas), le point d'entrée de votre grammaire va être la catégorie de la première règle. Une alternative aurait été d'ajouter 'entrypoints Typ;' pour définir le point d'entrée. –