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

Mar*_*ote 8 c++ utf-8 bison

我正在尝试制作一个Bison解析器来处理UTF-8字符.我不希望解析器实际解释Unicode字符值,但我希望它将UTF-8字符串解析为字节序列.

现在,Bison生成以下代码,这是有问题的:

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

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

有没有解决的办法?

edu*_*ffy 8

bison是的, flex没有.有一次我需要一个野牛解析器来处理UTF-8编码的文件,我最终编写了自己的yylex函数.

编辑:为了帮助,我使用了很多glib中可用的Unicode操作(gunicode我发现有一种类型和一些文件/字符串操作函数).