Je voudrais analyser un ensemble d'expressions, par exemple: X[3]
, X[-3]
, XY[-2]
, X[4]Y[2]
, etc.analyseur de débogage en imprimant des informations utiles
Dans mon parser.mly
, index
(qui est à l'intérieur []
) est défini comme suit:
index:
| INTEGER { $1 }
| MINUS INTEGER { 0 - $2 }
Le INTEGER
jeton, etc. MINUS
sont définis dans lexer comme normal.
J'essaye d'analyser un exemple, il échoue. Cependant, si je commente | MINUS INTEGER { 0 - $2 }
, cela fonctionne bien. Donc, le problème est certainement lié à cela. Pour déboguer, je veux obtenir plus d'informations, en d'autres termes je veux savoir ce qui est considéré comme MINUS INTEGER
. J'ai essayé d'ajouter l'impression:
index:
| INTEGER { $1 }
| MINUS INTEGER { Printf.printf "%n" $2; 0 - $2 }
Mais rien n'est imprimé lors de l'analyse.
Quelqu'un pourrait-il me dire comment imprimer des informations ou déboguer cela?
Inclure 'verbose - -debug' dans la ligne de commande de 'yacc'. –
désolé, je viens de réaliser que j'utilise «menhir» ... – SoftTimur
Votre question manque de détails importants. Vous avez écrit INTEGER et MOINS sont définis "comme normal" mais nous n'avons aucune idée de ce que vous pensez normal. Vous avez écrit "ça échoue" mais vous n'avez rien écrit sur l'échec. Vous avez des exceptions, ou le programme se termine mais avec un résultat étrange? – camlspotter