我正在使用 antlr Grammar 和antlr Ruby Target解析 PHP 代码。我必须解析的源文件之一实际上包含翻译,其中一些大量使用 Unicode 字符。语法似乎挂在“补充平面”的一个字符上,即U+10430。
过去我也遇到过类似的问题,因为 Ruby antlr 目标很老,而且不兼容 unicode(嗯,当时 Ruby 不兼容)。我们不得不将 RubyTarget.java getMaxCharValue 从 0xFF (ascii) 提高到 0xFFFF (unicode) 来解决它。现在看来,即使是这一套也不够。Unicode 声明此范围之外的字符可以使用两个 UTF-16 字符表示,但 antlr 如何管理呢?再次碰撞 getMaxCharValue 会有所帮助吗(它曾经做过一次,但我不喜欢“尝试”方法)?
谢谢 !