2013-06-12 65 views
0

我正在使用ANTLRWorks来测试我想出的一种语法,其中一个规则预见了BULLET符号的用法,但是当解析树正在构建时,它每次都会转义它。我也尝试了扩展ASCII表中的其他字符,并且它们也被省略。它是一个知道的错误,或者我应该以某种方式启用扩展的ASCII字符?ANTLR3与扩展的ASCII字符不匹配

回答

1

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

+0

嘿,子弹字符,它是否落在范围U + 10000到U + 10FFFF?这是unicode是“\ u2022”。如果是这样,它怎么能转换成UTF-16代理对呢?我可以在哪里查找? –

+0

@IhorM。不,该字符属于ANTLR无需特别考虑就可以处理的字符范围。只需在语法的词法分析部分使用''\ u2022''。 –

+0

这正是我最初做的。我在ANTLRWorks中测试过它。在输入框中,我把“x•y”,并在一个分析树,我看到NoViableAltException。 –