“list label”运算符不适用于一组备选方案

时间:2013-05-28 23:02:33

标签: antlr antlr4

以下规则似乎不适用于antlr4

testSetLabel
    : (flags+=( 'A' | 'B' | 'C' | 'D' ))* ;

会出现此错误:

TestSetLabelParser.java:69: error: incompatible types
                ((TestSetLabelContext)_localctx).flags = _input.LT(1);
                                                                  ^
  required: List<Token>
  found:    Token

如果我将规则更改为:

testSetLabel2
: ( flags+= 'A' | flags+='B' | flags+='C' | flags+='D' )* ;

我收到警告:'因素标签超出了设置'

这是错误还是预期的行为?

1 个答案:

答案 0 :(得分:0)

这听起来像个错误。 =运算符可以正常工作,如下例所示。

flags=('A' | 'B' | 'C' | 'D')

您看到的消息只是性能建议,因此我现在将使用工作方法,并在6月底ANTLR 4.1发布时将标签从集合中分解出来。

Here is the issue report