4

Lex / Yaccを使用して漢字の識別子を認識するにはどうすればよいですか?

4

2 に答える 2

2

Lex(レクサージェネレーター)のことだと思います。yacc はパーサージェネレーターです。

Unicode の漢字の完全な範囲は何ですか?によると、、ほとんどの CJH 文字がこの3400-9FFF範囲に含まれます。

http://dinosaur.compilertools.net/lex/index.htmlによると

任意の文字。ほぼすべての文字に一致するには、演算子文字 . 改行を除くすべての文字のクラスです。移植性はありませんが、8 進数へのエスケープは可能です。

                             [\40-\176]

8 進数 40 (空白) から 8 進数 176 (チルダ) までの ASCII 文字セットのすべての印刷可能な文字に一致します。

したがって、必要なものはのようなものだと思い[\32000-\117777]ます。

于 2010-07-08T16:01:11.977 に答える
1

Yaccは漢字を気にしませんが、気にlexします: 入力バイト (および文字) を分析してトークンを認識する責任があります。ただし、漢字は一般にマルチバイトです。これをサポートするような プログラムがありますlexが、そうではありませんlex。それは何度か議論されてきました。

参考文献:

標準の語彙トークナイザーlex(またはflex) は、マルチバイト文字を受け入れないため、多くの現代言語では実用的ではありません。このドキュメントでは、UTF-8 マルチバイト文字を記述する正規表現からシングルバイトの正規表現へのマッピングについて説明します。

于 2016-06-19T23:39:08.907 に答える