Antlr 4 - Java语法规则"显式通用调用"永远不会被访问

时间:2014-06-19 04:04:48

标签: antlr antlr4 code-translation

我正在构建一个监听器,将所有java方法调用A.Foo(args)转换为A.Bar(args)。在我看来,规则是:

expression '.' explicitGenericInvocation

听听最合适的规则。但是,在目视检查树之后,我意识到所有java方法调用都被识别为规则

expression '(' expressionList? ')'

而表达术语与

进一步匹配
expression '.' Identifier

表达式规则似乎始终覆盖explicitGenericInvocation规则。这是有意还是java语法中存在缺陷?如果是这样的话,那么规则explicitGenericInvocation的正确解释是什么?

1 个答案:

答案 0 :(得分:1)

explicitGenericInvocation必须以nonWildcardTypeArguments开头,即< ...>。因此,a.Foo(args)与通用规则匹配,而不是泛型类型的专用规则。