标签: antlr
我是antlr的初学者, 我尝试按照以下规则编写antlr语法(.g4文件):
我的问题是如何拒绝 U&'XyZ'之间的concat字符串?因为 U&是Unicode字符串的前缀
感谢您阅读
答案 0 :(得分:0)
U&'XyZ'永远不能被解析器识别为AND表达式,因为U&'XyZ'已经在词法分析器中被标记为单个Unicode字符串标记:
U&'XyZ'
expr : expr '&' expr | STRING | ID ; STRING : 'U&'? '\'' ( ~[\\'\r\n] | '\\' ~[\r\n] )* '\'' ; ID : [a-zA-Z_] [a-zA-Z_0-9]* ;
它将以此解析U&'XyZ'&X:
U&'XyZ'&X