Beachten Sie, dass Sie neben globalen (ANTLR) Bereichen auch lokale Regelbereiche haben können, wie folgt:
%Vor% Die einzige Möglichkeit, lokale Regelbereiche zu verwenden, ist, wenn viele Prädikate vorhanden sind oder das globale Zurückverfolgen aktiviert ist (was zu allen Regeln führt) Prädikate vor ihnen). In diesem Fall können Sie eine Membervariable String x
erstellen (oder sie in einem globalen Bereich definieren) und sie in der Regel parse
festlegen, aber Sie ändern diese Instanz / Bereichsvariable möglicherweise danach die der Parser zurückverfolgen könnte, und diese Rückverfolgung wird nicht bewirken, dass die globale Variable in ihren ursprünglichen Zustand versetzt wird! Die lokale Bereichsvariable wird auch nicht "unset" sein, aber das ist wahrscheinlich weniger ein Risiko: sie sind lokal für eine einzelne Regel.
Zusammenfassend: Ja, Sie haben recht, globale Bereiche und Member- / Instanzvariablen sind sich sehr ähnlich. Aber ich würde mich eher für Mitglieder-Variablen wegen der freundlicheren Syntax entscheiden.