Java ANTLR树没有子节点?

Java ANTLR树没有子节点?,java,parsing,grammar,antlr4,Java,Parsing,Grammar,Antlr4,因此,我有一个非常简单的ANTLR4语法: grammar TestGrammar; @header { package com.xxxxxx; } start_rule: (Function | IDENTIFIER)* EOF; Function : IDENTIFIER Parameter ; Parameter : '(' (IDENTIFIER) ')' ; IDENTIFIER : ('A'..'Z' | '

因此,我有一个非常简单的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 
我希望得到一棵树,当然有福和巴。但我也希望看到一个带有两个子节点的条形节点,一个用于函数的标识符名称,另一个用于参数名称

然而,我最终看到的只是一个简单的令牌列表,似乎无法在函数令牌中进一步递归。像这样:

我通过重写生成的BaseListener来遍历这棵树。在查看其中的visitEveryRule函数时,我看到每个顶级规则都有一个节点,但没有遇到参数的子节点


如何分别检索参数标识符令牌(名称)和函数标识符令牌?

函数
更改为
函数
@saka1029似乎很有效。。。我如何在ANTLR中找到这些不同的资本化约定?请参阅。“标记总是以大写字母开头。”和“解析器规则名称总是以小写字母开头。”