Was ist der richtige Weg umgehen dieses Problem in ANTLR zu lösen:Wie mit der Liste Rückgabewert in ANTLR
ich eine einfache Grammatikregel habe, sagen, um eine Liste mit einer beliebigen Anzahl von Elementen.
list
: '[]'
| '[' value (COMMA value)* ']'
Wenn ich einen Rückgabewert für die Liste zuweisen wollte, und habe diesen Wert die aktuelle Liste der zurückgegebenen Werte aus der Produktion sein, was ist der richtige Weg, es zu tun? Die Alternativen Ich bin unterhaltsam sind:
- meinen eigenen Stapel im globalen Bereich erstellen Spur dieser Listen
- Versuchen Sie, halten Sie die Baumknoten unter mir zu inspizieren und extrahieren Informationen auf diese Weise
- Zugang in etwas raffinierte und coole Art und Weise, die ich herausfinden möchte, in der ich leichten Zugang zu solch einer Liste von innerhalb der mit der Regel verbundenen Handlung bekommen kann.
Ich denke, die Frage ist: Wie machen die coolen Kinder das?
(FYI die Python-API für ANTLR Ich verwende, aber wenn Sie mich treffen mit einer anderen Sprache, ich kann damit umgehen)
Und das ist sehr nah daran, wie es auch in Java aussieht. Vielen Dank! Antlr forderte mich jedoch auf, jedem "Wert" Namen zuzuweisen: a = Ausdruck {$ WertListe.add ($ a.Wert);} (b = Ausdruck {$ WertListe.add ($ b.Wert);}) * –