Erste Schritte mit ANTLR und Vermeidung häufiger Fehler

Ich habe angefangen, ANTLR zu lernen und habe sowohl das 2007er Buch "The Definitive ANTLR Reference" als auch ANTLRWorks (ein interaktives Tool zum Erstellen von Grammatiken). Und als solche habe ich mit Kapitel 3 begonnen ("Eine kurze Tour für Ungeduldige").

Dies ist ein ziemlich schmerzhafter Vorgang, zumal einige Fehler ziemlich undurchdringlich sind (z.ANTLR: Problem "Fehlender Attributzugriff auf Regelbereich" was für mich nur bedeutet "du hast was falsch gemacht"). Außerdem habe ich einige sehr einfache Grammatiken (nur 3-4 Produktionen) und einfache Eingaben (2 Zeilen), die beim Ausführen den Fehler "OutOfMemory" verursachen.

Die ANTLR-Site ist nützlich, aber etwas fragmentiert, und einige SO-Benutzer haben kommentiert (https://stackoverflow.com/questions/278480/good-tutorial-for-antlr), dass das Buch und die Tutorials ein hohes Einstiegsniveau erwarten. Ich habe mich aus diesem Grund nicht an die ANTLR-Diskussionsliste gewandt.

SPÄTER Wir fangen an, uns damit auseinanderzusetzen. Es wäre nützlich, einfache, zuverlässige Beispiele zu haben, die vorsichtig erweitert werden könnten. Es lohnt sich auf jeden Fall, es zu beherrschen, da wir eine ganze Menge unseres Denkens basierend auf ANTLR umgestaltet haben.

Ein Problem ist, dass ANTLR V3 wesentliche Änderungen gegenüber V2 aufweist. Eine Antwort auf SO (und auf den ANTLR-Seiten) bezog sich auf eine V2-Syntax, die nicht mehr verfügbar ist.

Einige der ANTLR-Fragen zu SO haben mir sehr geholfen, aber sie zu finden ist ein bisschen ad hoc. Daher möchte ich wissen, wie SO-Benutzer dazu beitragen können, den Lernprozess weniger schmerzhaft zu gestalten. (Wenn Sie sich auf das Nachschlagewerk beziehen, ist es nützlich, auf bestimmte Seiten zu verweisen.)

BEARBEITEN. @duffymo und @JamesAnderson haben bestätigt, dass ANTLR harte Arbeit ist - hauptsächlich, weil Parser schwierig sind. (FWIW Ich habe LEX / YACC usw. durchlaufen und es besteht kein Zweifel, dass ANTLR leistungsfähiger und einfacher zu bearbeiten ist.) Ich denke, es wäre immer noch nützlich, Bereiche zu haben, in denen es möglich ist, Verschmutzungen zu vermeiden, wie:

Achten Sie auf die korrekte Großschreibung der VariablennamenPaketnamen zu Lexer und Parser hinzufügenAchten Sie auf die Reihenfolge der Regeln, da dies die Priorität beeinflusst

und mehr davon wären nützlich.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage