我很容易理解@members。它将成员添加到解析器类。但范围意味着什么?
scope Symbols{
Set types;
}
是"符号"解析器类中的成员?我检查生成的java文件,
protected static class Symbols_scope {
Set types;
}
protected Stack Symbols_stack = new Stack();
范围变为内部类和Stack成员。 当我在规则操作中使用Symbols :: types时,我在java文件中看到了这个,
Symbols_stack.push(new Symbols_scope());
int translation_unit_StartIndex = input.index();
((Symbols_scope)Symbols_stack.peek()).types = new HashSet();
因此,每次我引用" symbol"时,它都会创建一个新的"符号"并将其推入堆栈? 还有全球和地方范围。有什么不同?在java文件中,它们都生成内部类和Stack成员。然后是什么使全球范围"全球和制造本地范围"本地?