Dans la section de classe de mon code, si j'écris une erreur, quelques lignes seront signalées comme des erreurs alors qu'elles ne le devraient pas. J'ai mis '| error
' dans certains endroits où il est bon/sûr de récupérer des erreurs mais je ne pense pas qu'il l'utilise. Peut-être essaye-t-il de reprendre une expression médiatique quelque part?bison: une erreur provoque une erreur supplémentaire mais incorrecte
Y a-t-il un moyen de forcer Bison à essayer de récupérer dans des endroits désignés? Comment ça marche et que pourrais-je faire de mal?
Je place la ligne d'erreur à côté de la boucle. Voici un exemple:
SomeRuleLoop:
| Rule ',' SomeRuleLoop
Rule:
A
| B
| C
| Error
A:
AA AAB AABC
| AA AAB AABC Z
...
Voici un exemple de mes règles. Je vois "erreur funcBody" dans ma console mais la ligne suivante reçoit une erreur à cause de la première erreur. Même si chaque funcBodyRule est autonome. J'ai essayé d'écrire # == entre la ligne avec la première erreur et la ligne avec la deuxième. J'ai écrit ceci pour vérifier si l'analyseur est toujours dans la boucle de funcbody.
Cela ne donne pas une erreur donc c'est
. Nevermind j'ai ajouté un printf et la chaîne n'est pas imprimée alors peut-être que ce n'est plus dans la boucle de fonction? Comment puis-je réparer ça?
Il va être presque impossible d'aider beaucoup sans un code pour nous aider. ** Mais ** il doit être proche du code minimal, pas plusieurs centaines de lignes .. –
@Jonathan Leffler: C'est où la boucle est. J'ai modifié ma question –
Vous savez que Yacc (Bison) est sensible à la casse, donc l'alternative avec 'Error' n'est pas la même que 'error' (qui est 'built in' et a une signification spécifique w.r.t error recovery). –