在 AntlrWorks(生成 C#)中编写 Antlr3 语法时,我编写了以下一组词法分析器规则,如下所示:
array :
'[' properties? ']' -> ^(ARR properties?)
;
properties :
propertyName (','! propertyName)*
;
propertyName :
ID
| ESC_ID
;
ESC_ID :
'\'' ESC_STRING '\''
;
fragment
ESC_STRING
: ( ESCAPE_SEQ | ~('\u0000'..'\u001f' | '\\' | '\"' ) )*
;
但是,每当我尝试解析与ESC_ID
规则匹配的任何字符串时,我都会在字符串末尾遇到一个幻像 EOF 字符:
输入:['testing 123']
<mismatched token: [@4,15:15='<EOF>',<-1>,1:15]
我知道 ANTLR 生成的代码的 Java 版本没有经过彻底调试,但到目前为止我已经设法解决了这些问题。关于在匹配这个词法分析器规则时如何不遇到这个错误的想法?
更新
我现在尝试使用 Antlr3 的官方 C# 端口,我仍然得到同样的错误。