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

时间:2010-06-28 13:31:44

标签: lex lexical-analysis

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

2 个答案:

答案 0 :(得分:2)

我认为你的意思是Lex(词法分析器)。 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]

答案 1 :(得分:0)

GreatVendor\Db不关心中文字符,但是Yacc会这样做:它负责分析输入字节(和字符)以识别标记。但是,汉字通常是多字节的。有一些 {/ em> lex这样的程序可以支持这一点,但它们不是lex。已经多次讨论过。

进一步阅读:

  

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