Ist die "Implizite token-definition im parser-Regel" etwas zu befürchten?
Ich bin momentan dabei, meine erste Grammatik mit ANTLR und ANTLRWorks 2. Ich habe meist fertig, und die Grammatik selbst (man erkennt die Codes geschrieben in der beschriebenen Sprache und baut korrekten parse-Bäume), aber ich habe noch nicht angefangen nichts darüber hinaus.
Was mir sorgen macht ist, dass jedes erste vorkommen eines Zeichens in einer parser-Regel wird Unterstrichen mit einem gelben kringel zu sagen "Implizite token-definition im parser-Regel".
Z.B. in dieser Regel, die 'var'
hat, die kringel:
variableDeclaration: 'var' IDENTIFIER ('=' expression)?;
Wie sieht es genau:
Das seltsame ist, dass ANTLR selbst nicht zu stören scheint diese Regeln (wenn dabei test rig test, ich kann nicht sehen, jeder diese Warnung in den parser-generator-Ausgang, nur etwas über falsche Java-version auf meinem Rechner installiert), so ist es nur ANTLRWorks beschweren.
Ist es etwas zu befürchten oder sollte ich diese Warnungen ignorieren? Sollte ich erklären, alle die Token explizit in der lexer-Regeln? Die meisten exaples, die in der offiziellen Bibel Die Defintive ANTLR Reference scheinen zu tun genau so, wie ich den code schreiben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich sehr empfehlen korrigiert wird, alle Instanzen dieser Warnung im code von Bedeutung.
Diese Warnung erstellt wurde (für mich eigentlich), um Sie zu warnen, um Situationen wie die folgende:
Da ANTLR-4 fördert die action-Codes werden in getrennte Dateien geschrieben, die in der Zielsprache anstelle der Einbettung direkt in die Grammatik, ist es wichtig unterscheiden zu können zwischen
<<
und>>
. Wenn Token wurden nicht explizit erstellt für diese Operatoren Sie zugeordnet werden beliebige Typen und nicht benannte Konstanten werden für die Referenzierung von Ihnen.Diese Warnung hilft auch vermeiden Sie die folgenden Situationen:
Einer parser-Regel enthält ein unbeabsichtigtes token-Referenz, wie beispielsweise die folgenden:
fragment
, so die Warnung ist immer noch korrekt - die token definiert wurde allein durch den Verweis auf etwas mit diesem Namen in einer parser-Regel.Wenn Sie schreiben lexer-Grammatik-was nicht verwendet werden, die über mehrere parser grammmar(s), dann können Sie diese Warnung ignorieren, gezeigt ANTLRWorks2.