Java ANTLR树没有子节点?
因此,我有一个非常简单的ANTLR4语法: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' | '
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中找到这些不同的资本化约定?请参阅。“标记总是以大写字母开头。”和“解析器规则名称总是以小写字母开头。”