我在ANTLR4中扩展了一个侦听器,我想获得所有与解析器中的特定规则相关联的令牌,有没有什么方法可以做到这一点?
即
myConfiguration: CONFIG EQUALS parameters ;
parameters: ALPHANUMERIC+
CONFIG: 'config' ;
ALPHANUMERIC: [a-zA-Z0-9] ;
如何让监听器在输入myConfiguration
解析规则时查找CONFIG
和EQUALS
的值?
有没有我可以使用的某种for循环?
for( all tokens in this rule) {
System.out.println(token.getText());
}
我可以通过解析器类看到一个令牌列表,但我找不到与当前规则相关联的令牌列表。
我这样问的原因是为了避免在监听程序和语法中重复输入我需要的标记名称。通过这样做,我可以检查是否找到了该特定规则中的每个令牌类型,而不必手动键入名称。
发布于 2013-02-21 18:33:07
这可能就是你要找的。
List<TerminalNode> terminalNodes = new ArrayList<TerminalNode>();
for (int i = 0; i < context.getChildCount(); i++) {
if (context.getChild(i) instanceof TerminalNode) {
terminalNodes.add((TerminalNode)context.getChild(i));
}
}
https://stackoverflow.com/questions/15006720
复制相似问题