繁体   English   中英

Antlr生成的词法分析器挂在“辅助平面”的Unicode字符上(antlr 3.4)

[英]Antlr generated lexer hangs on unicode character of “supplementary plane” (antlr 3.4)

我正在使用antlr语法和antlr Ruby Target解析PHP代码。 我必须解析的源文件之一实际上包含翻译,其中一些文件大量使用了Unicode字符。 语法似乎挂在“补充平面”的一个字符上,即U + 10430

过去,我有一个类似的问题,这是因为Ruby antlr目标很旧,并且不符合unicode(嗯,当时Ruby还不行)。 为了解决这个问题,我们不得不将RubyTarget.java getMaxCharValue从0xFF(ascii)更改为0xFFFF(unicode)。 现在看来,即使这套设备也不足够。 Unicode指出此范围之外的字符可以使用两个UTF-16字符表示,但是antlr如何管理它? 再次破坏getMaxCharValue是否会有所帮助(它曾经做过一次,但是我不喜欢“尝试”方法)?

谢谢 !

ANTLR的参考Java目标只能通过在语法中使用UTF-16代理对并为输入流使用UTF-16编码来解析补充平面中的字符。 其他目标由社区成员创建,并且可能或(如您所看到的Ruby目标)可能不支持相同范围的字符。

由于无法在语法本身中表示0xFFFE之后的任何内容,因此即使修改目标以支持0xFF以上的字符,您也只能使用UTF-16编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM