ANTLR树没有子节点?

时间:2016-02-09 23:41:29

标签: java parsing grammar antlr4

所以,我有一个非常简单的ANTLR4语法:

grammar TestGrammar;

@header {
    package com.xxxxxx;
}

start_rule: (Function | IDENTIFIER)* EOF;

Function
    :
    IDENTIFIER Parameter
    ;


Parameter
    : '(' (IDENTIFIER) ')'
    ;

IDENTIFIER
    :
    ('A'..'Z' | 'a'..'z')*
    ;

WS
    :   [ \t]+
        -> skip
    ;

OTHER : . -> skip ; //make it a fuzzy parser

这当然是一个人为的例子,但展示了我的问题。当我提供一些示例输入时,如:

foo bar(x) baz 

我当然希望得到一棵带有foo和baz的树。但我也希望看到一个带有两个子节点的条形节点,一个用于函数的标识符名称,然后一个用于参数名称。

然而,我实际上最终看到的只是一个令牌的平面列表,似乎无法在功能令牌中进一步递减。像这样:

tree

我通过覆盖生成的BaseListener来走这棵树。当在其中观察visitEveryRule函数时,我看到每个顶级规则的节点,但是没有遇到参数的子节点。

如何单独检索参数标识符标记(名称)和函数标识符标记?

0 个答案:

没有答案
相关问题