In Abschnitt 10.4, Die Definitive ANTLR-Referenz, weist Sie an, fehlanpassung () & amp; recoverFromMismatchedSet (), wenn Sie den ersten Parsing-Fehler beenden möchten. Aber zumindest in ANTLR 3.2 scheint es, dass es keine Mismatch () -Methode gibt, und die recoverFromMismatchedSet () -Dokumentation sagt, dass es "nicht aktuell verwendet" ist. Es scheint also, dass sich die Dinge seit der Veröffentlichung des Buches geändert haben.
Was soll ich stattdessen tun, um den ersten Analysefehler in ANTLR 3.2 zu beenden?
Ich habe diese Frage an anltr-interest gestellt, und Andrew Haritonkin hat geantwortet. Bart K ist halb richtig; Sie müssen recoverFromMismatchedSet () außer Kraft setzen, aber auch recoverFromMismatchedToken ().
Wenn Sie möchten, dass der Lexer beim ersten Fehler beendet wird, gibt es eine Wiki-Seite, die erklärt, was zu tun ist:
Kurz gesagt, heißt es:
Hier ist eine Beispielgrammatik, die nach dem ersten Lexer- oder Parserfehler beendet wird:
%Vor%Beispielausgabe:
%Vor%Tags und Links antlr error-handling