gpt4 book ai didi

unicode - Flex(词法分析器)对 unicode 的支持

转载 作者:行者123 更新时间:2023-12-01 23:48:30 24 4
gpt4 key购买 nike

我想知道最新版本的flex是否支持unicode?

如果可以,如何使用模式来匹配汉字?

更多: Use regular expression to match ANY Chinese character in utf-8 encoding

最佳答案

目前,flex 仅生成 8 位扫描仪,这基本上限制了您使用 UTF-8。因此,如果您有一个模式:

肖晗   { printf ("xiaohan\n"); }

它将按预期工作,因为模式和输入中的字节序列将相同。更困难的是字符类。如果你想匹配肖或瀚,你不能写:

[肖晗]   { printf ("xiaohan/2\n"); }

因为这将匹配六个字节 0xe8、0x82、0x96、0xe6、0x99 和 0x97 中的每一个,这实际上意味着如果您提供 肖瀚 作为输入,该模式将匹配六个次。因此,在这个简单的情况下,您必须将模式重写为 (肖|瀚)

对于范围,Hans Aberg 写了 tool in Haskell将它们转换为 8 位模式:

Unicode> urToRegU8 0 0xFFFF
[\0-\x7F]|[\xC2-\xDF][\x80-\xBF]|(\xE0[\xA0-\xBF]|[\xE1-\xEF][\x80-\xBF])[\x80-\xBF]
Unicode> urToRegU32 0x00010000 0x001FFFFF
\0[\x01-\x1F][\0-\xFF][\0-\xFF]
Unicode> urToRegU32L 0x00010000 0x001FFFFF
[\x01-\x1F][\0-\xFF][\0-\xFF]\0

这不太漂亮,但应该可以。

关于unicode - Flex(词法分析器)对 unicode 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com