如何理解Antlr中的范围概念

时间:2014-05-24 11:17:03

标签: scope antlr

我很容易理解@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成员。然后是什么使全球范围"全球和制造本地范围"本地?

0 个答案:

没有答案