Ich habe eine Parser-Regel mit alternativen Bezeichnungen.
Ich möchte ein Besucher Methode für, wenn eine der Markierungen sind gut besucht implementieren:Besucher-Methode für alle Etiketten
someRule
: 'a' #aLabel
| 'b' #bLabel
| 'c' #cLabel
;
Und ich brauche wie dies einige Methode:
T visitSomeRule(SomeRuleContext ctx)
Vielleicht könnte ich die Besuchsmethode überschreiben und den Typ des Arguments überprüfen? Das scheint jedoch eine hackige Art zu sein. – Midnightas
Ja, darauf habe ich mich in meiner Antwort bezogen. Wenn Sie Terence Parrs Buch über die alternativen Bezeichnungen lesen, ist es klar, dass diese Funktion hinzugefügt wurde, um "präzisere" Kontexte durch gezieltere Unterklassen zu geben. Und ich habe festgestellt, dass ich die Verwendung von Etiketten für die meisten meiner Arbeiten bevorzuge. Aber wenn Sie diesen Kontext auf höherer Ebene wirklich brauchen, können Sie sicher durch seine Children iterieren, ihre Typen untersuchen und individuell darauf reagieren. Es ist möglich, und ich habe es getan. Bis ich von den alternativen Labels erfuhr. ;) – TomServo