我正在尝试制作一个 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
不是。有一次我需要一个 bison 解析器来处理 UTF-8 编码的文件,我最终编写了自己的 yylex
函数。
编辑:为了提供帮助,我使用了 glib 中提供的大量 Unicode 操作。 (有一个 gunicode
类型和一些我发现有用的文件/字符串操作函数)。
关于c++ - Bison 可以解析 UTF-8 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935144/