我正在尝试将Chris Lambro's ANTLR3
Javascript Grammar移植到ANTLR4
我收到以下错误,
Rule reference 'LT' is not currently supported in a set
在以下代码中
~(LT)*
LineComment
: '//' ~(LT)* -> skip
;
LT : '\n' // Line feed.
| '\r' // Carriage return.
| '\u2028' // Line separator.
| '\u2029' // Paragraph separator.
;
我需要帮助,以了解为什么会出现此错误以及如何解决该错误。
最佳答案
ANTLR中的~
运算符会反转一组符号(词法分析器中的字符或解析器中的 token )。在集合内部,您有对LT
lexer规则的引用,而ANTLR 4当前不支持该规则。要解决此问题,您需要内嵌规则引用:
LineComment
: '//' ~([\n\r\u2028\u2029])* -> skip
;
关于porting - ANTLR4语法集中的当前不支持规则引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16790861/