10

我正在尝试将Chris Lambro 的ANTLR3Javascript Grammar移植到ANTLR4

我收到以下错误,

集合中当前不支持规则引用“LT”

在下面的代码中~(LT)*

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

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

我需要帮助了解为什么会出现此错误,以及如何解决它。

4

1 回答 1

10

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

LineComment
    :   '//' ~([\n\r\u2028\u2029])* -> skip
    ;
于 2013-05-28T11:44:20.077 回答