c++ - Bison 可以解析 UTF-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"));
    }

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

有解决办法吗?

最佳答案

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

编辑:为了提供帮助,我使用了 glib 中提供的大量 Unicode 操作。 (有一个 gunicode 类型和一些我发现有用的文件/字符串操作函数)。

关于c++ - Bison 可以解析 UTF-8 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/935144/

相关文章:

C++ char* 错误,程序崩溃

mysql - "utf8_unicode_ci"和 "utf8_unicode_520_ci"有什么区别

php - 如何在 HTML、PHP 和 MySQL 中处理日语字符

php - UTF-8贯穿始终

c++ - 弹性和 Bison : parse string without quotes

c++ - gtk 最小尺寸

c++ - 暂停和恢复 std::thread 的正确方法

c++ - 键入 Alt 键时可能会在 char 中解决 "Invalid Octal Digit"

在 Bison 中找不到 'syntax error' 消息的原因

parsing - 如何使用 Flex 实现两遍扫描仪?