繁体   English   中英

Bison可以解析UTF-8字符吗?

[英]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.

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