ANTLR4:获取Listener中特定规则的令牌列表

Har*_*Har 6 antlr4

我在ANTLR4中扩展了一个Listener,我希望获得与解析器中特定规则相关的所有标记,是否有方法可以做到这一点?

myConfiguration: CONFIG EQUALS parameters ;
parameters: ALPHANUMERIC+

CONFIG: 'config' ;
ALPHANUMERIC: [a-zA-Z0-9] ;
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉我的听众查找的值CONFIG,并EQUALS在进入时myConfiguration解析规则?

有没有我可以使用的某种循环?

for( all tokens in this rule) {
    System.out.println(token.getText());
}
Run Code Online (Sandbox Code Playgroud)

我可以通过解析器类看到有一个令牌列表,但我找不到与当前规则关联的令牌列表.

我之所以这样问,是因为我可以避免在Listener和语法中重新输入我需要的令牌名称.通过这样做,我可以检查是否找到了该特定规则中的每个令牌类型,而无需手动输入名称.

Sam*_*ell 8

这可能就是你要找的东西.

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));
    }
}
Run Code Online (Sandbox Code Playgroud)