我为语法写了一个存根(到目前为止只匹配注释),它给了我错误:
语法错误:无效的字符文字:<INVALID>
此外,我已经追踪到以下命令中的错误:
... ~LINE_ENDING* ...
LINE_ENDING : ( '\n' | '\r' | '\r\n');
有人可以帮我解决这个问题吗?
我为语法写了一个存根(到目前为止只匹配注释),它给了我错误:
语法错误:无效的字符文字:<INVALID>
此外,我已经追踪到以下命令中的错误:
... ~LINE_ENDING* ...
LINE_ENDING : ( '\n' | '\r' | '\r\n');
有人可以帮我解决这个问题吗?
~
运算符只能应用于集合。在词法分析器中,集合的元素是输入流的字符。换句话说,你可以拥有这个:
~( 'a'..'z'
| 'C'
| '\r'
| '\n'
)
但是你不能有这个,因为它是一个序列(两个字符)而不是一个set。
~('\r\n')
您遇到的问题是第二种情况的扩展。
不知道为什么会出现该错误(目前我无法自己进行测试)。也许您否定单个字符(\r
或\n
)或双字符(\r\n
)的事实是一个问题?
如果您尝试:
SingleLineComment
: '//' (~LineBreakChar)* (NewLine | EOF)
;
LineBreakChar
: '\r' | '\n'
;
NewLine
: '\r'? '\n' | '\r'
;
?