首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用Lex/Yacc识别汉字中的识别符

利用Lex/Yacc识别汉字中的识别符
EN

Stack Overflow用户
提问于 2010-06-28 21:31:44
回答 2查看 507关注 0票数 4

如何使用Lex/Yacc识别汉字中的标识符?

EN

回答 2

Stack Overflow用户

发布于 2010-07-09 00:01:12

我想你指的是Lex ( lexer生成器)。Yacc是解析器生成器。

根据What's the complete range for Chinese characters in Unicode?的说法,大多数CJH字符都在3400-9FFF范围内。

根据http://dinosaur.compilertools.net/lex/index.html的说法

任意字符。为了匹配几乎任何字符,操作符字符。是除换行符以外的所有字符的类。转义为八进制是可能的,尽管不可移植:

\40-\176

匹配ASCII字符集中的所有可打印字符,范围从八进制40 (空白)到八进制176 (代字号)。

所以我假设你需要的是像[\32000-\117777]这样的东西。

票数 2
EN

Stack Overflow用户

发布于 2016-06-20 07:39:09

Yacc不关心中文字符,但lex关心:它负责分析输入的字节(和字符)以识别标记。然而,中文字符通常是多字节的。有像lex这样的程序可能支持这一点,但它们不是lex。这件事已经讨论过好几次了。

进一步阅读:

对于标准的词法记号赋予器,lex (或flex),)不接受多字节字符,因此对于许多现代语言来说是不切实际的。本文描述了从描述UTF-8多字节字符的正则表达式到单字节正则表达式的映射。

答案指出了如何通过使用UTF-8模式的特殊情况来绕过这个限制。

  • Unicode Support in Flex (2009/4/26)

本质上与前面的相同(但在前面,可能是这些评论的来源)

答案列出了这里询问的一些可能做到这一点的替代实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3132762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档