ANTLR4语法中的集合当前不支持规则引用

时间:2013-05-28 11:24:31

标签: porting antlr3 antlr4

我正在尝试将Chris Lambro's ANTLR3 Javascript Grammar移至ANTLR4

我收到以下错误,

  

集合

目前不支持规则参考'LT'

在以下代码~(LT)*

LineComment
    : '//'  ~(LT)* -> skip
    ;

LT  : '\n'      // Line feed.
    | '\r'      // Carriage return.
    | '\u2028'  // Line separator.
    | '\u2029'  // Paragraph separator.
    ;

我需要帮助理解为什么我会收到此错误,以及我如何解决它。

1 个答案:

答案 0 :(得分:8)

ANTLR中的~运算符反转一组符号(词法分析器中的字符或解析器中的标记)。在集合中,您可以引用LT词法分析器规则,ANTLR 4目前不支持该规则。要解决此问题,您需要内联规则引用:

LineComment
    :   '//' ~([\n\r\u2028\u2029])* -> skip
    ;