ANTLR3与扩展ASCII字符不匹配

ANTLR3与扩展ASCII字符不匹配,antlr,antlr3,antlrworks,Antlr,Antlr3,Antlrworks,我正在使用ANTLRWorks测试我提出的一个语法,其中一个规则预见了BULLET符号的使用•,但在构建解析树时,它每次都会逃逸。我还尝试了扩展ASCII表中的其他字符,它们也被省略了。这是一个已知错误还是应该以某种方式启用扩展ASCII字符?ANTLR 3.x到4.0可以匹配除U+FFFF之外的任何UTF-16代码单元。ANTLR 4.1也将能够匹配U+FFFF。要匹配U+10000到U+10FFFF范围内的字符,您需要在语法中将它们显式编码为UTF-16代理项对。嘿,bullet char,

我正在使用ANTLRWorks测试我提出的一个语法,其中一个规则预见了BULLET符号的使用•,但在构建解析树时,它每次都会逃逸。我还尝试了扩展ASCII表中的其他字符,它们也被省略了。这是一个已知错误还是应该以某种方式启用扩展ASCII字符?

ANTLR 3.x到4.0可以匹配除U+FFFF之外的任何UTF-16代码单元。ANTLR 4.1也将能够匹配U+FFFF。要匹配U+10000到U+10FFFF范围内的字符,您需要在语法中将它们显式编码为UTF-16代理项对。

嘿,bullet char,它是否属于U+10000到U+10FFFF范围?它的unicode是“\u2022”。如果是这样,如何将其转换为UTF-16代理项对?“我在哪里可以找到它?”我问。不,该字符属于ANTLR可以处理的字符范围,无需任何特殊考虑。只需在语法的lexer部分使用
'\u2022'
。这正是我最初所做的。我在ANTLRWorks中进行了测试。在输入框中我输入了“x•y”,在解析树中我看到了NoviablealException。您使用的是AntlWorks的解释器或调试器模式吗?口译员经常给出错误的结果。无论哪种方式,这在AntlWorks中都是一个bug,因为像
\u2022
这样的字符的支持在ANTLR本身已经过很好的测试。你在最初的帖子中没有具体说明什么,所以你可能想在这里写一个详细的例子来提出一个问题:在我看来,这是一个AntlWorks问题。谢谢你帮我整理。