Flex(lexer)支持unicode
发布时间:2020-12-15 02:13:33 所属栏目:百科 来源:网络整理
导读:我想知道最新版本的flex是否支持unicode? 如果是这样,怎样才能使用模式来匹配汉字? 更多: Use regular expression to match ANY Chinese character in utf-8 encoding 解决方法 目前,flex只生成8位扫描仪,这基本上限制了您使用UTF-8。所以如果你有一个
我想知道最新版本的flex是否支持unicode?
如果是这样,怎样才能使用模式来匹配汉字? 更多: 解决方法
目前,flex只生成8位扫描仪,这基本上限制了您使用UTF-8。所以如果你有一个模式:
肖晗 { printf ("xiaohann"); } 它将按预期工作,因为模式和输入中的字节序列将相同。字符类更困难。如果你想匹配字符肖或晗,你不能写: [肖晗] { printf ("xiaohan/2n"); } 因为这将匹配六个字节0xe8,0x82,0x96,0xe6,0x99和0x97中的每一个,这实际上意味着如果您提供肖晗作为输入,则模式将匹配六次。所以在这种简单的情况下,你必须将模式重写(肖|晗)。 对于范围,汉斯·阿伯格写了一个tool in Haskell,将其转换成8位模式: Unicode> urToRegU8 0 0xFFFF [ -x7F]|[xC2-xDF][x80-xBF]|(xE0[xA0-xBF]|[xE1-xEF][x80-xBF])[x80-xBF] Unicode> urToRegU32 0x00010000 0x001FFFFF [x01-x1F][ -xFF][ -xFF] Unicode> urToRegU32L 0x00010000 0x001FFFFF [x01-x1F][ -xFF][ -xFF] 这不漂亮,但它应该工作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |