Die Deklaration des Gültigkeitsbereichs der globalen Regel antlr im Vergleich zur Deklaration @members

Welches würden Sie bevorzugen, um eine Variable in welchem ​​Fall zu deklarieren, globaler Bereich oder @members-Deklaration? Es scheint mir, dass sie für den gleichen Zweck dienen können?

AKTUALISIEREN Hier ist eine Grammatik, um zu erklären, was ich meine.

grammar GlobalVsScope;

scope global{
  int i;
}
@lexer::header{package org.inanme.antlr;}
@parser::header{package org.inanme.antlr;}

@parser::members {
  int j;
}

start
scope global;
@init{
  System.out.println($global::i);
  System.out.println(j);
}:R EOF;

R:'which one';

Antworten auf die Frage(1)

Ihre Antwort auf die Frage