我试图做一个Bison分析器来处理UTF-8字符。我不想解析器实际解释Unicode字符值,但我希望它来解析UTF-8字符串作为字节序列。

现在,野牛生成以下代码这是有问题:

  if (yychar <= YYEOF)
    {
      yychar = yytoken = YYEOF;
      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }

在的问题是,UTF-8字符串的许多字节将具有负值,和Bison解释负值作为EOF,并停止。

有没有办法解决?

有帮助吗?

解决方案

bison是,flex没有。一周时间,我需要一个野牛解析器使用UTF-8编码的文件,我结束了写我自己yylex功能工作。

修改的:为了帮助,我用了很多的油嘴(有一个gunicode类型和我发现有用的一些文件/字符串操作函数)。

scroll top