我正在使用 ANTLR 为类 java 语言生成识别器,以下规则用于识别泛型类型:
referenceType
: singleType ('.' singleType)*
;
singleType
: Identifier typeArguments?
;
typeArguments
: '<' typeArgument (',' typeArgument)* '>'
;
typeArgument
: referenceType
;
现在,对于以下输入语句,ANTLR 会产生“没有可行的替代方案”错误。
Iterator<Entry<K,V>> i = entrySet().iterator();
但是,如果我在两个连续的 '>' 字符之间放置一个空格,则不会产生错误。ANTLR似乎无法区分上述规则和用于识别移位表达式的规则,但我不知道如何修改语法来解决这种歧义。任何帮助,将不胜感激。