[英]Can Bison parse UTF-8 characters?
我正在尝试制作一个Bison解析器来处理UTF-8字符。 我不希望解析器实际解释Unicode字符值,但我希望它将UTF-8字符串解析为字节序列。
现在,Bison生成以下代码,这是有问题的:
if (yychar <= YYEOF)
{
yychar = yytoken = YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
问题是UTF-8字符串的许多字节将具有负值,并且Bison将负值解释为EOF,并停止。
有没有解决的办法?
bison
是的, flex
没有。 有一次我需要一个野牛解析器来处理UTF-8编码的文件,我最终编写了自己的yylex
函数。
编辑 :为了帮助,我使用了很多glib中可用的Unicode操作(有一个gunicode
类型和一些我觉得有用的文件/字符串操作函数)。
flex
是这里的问题,你可能想看看zlex
。
这是4年前的一个问题,但我面临同样的问题,我想分享我的想法。
问题是在UTF-8中你不知道要读取多少字节。 如上所述,您可以使用自己的词法分析器,让它读取整行,或者每次读取4个字节。 然后从中提取UTF-8字符,并读取更多字节以再次完成4个字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.