フレックスとUTF8

「むかしむかし、先週の金曜日のようです」Unicodeデータを処理できる字句解析器が必要でした。



字句解析プログラムの作成者はFlexを使用したいと考えていましたが、これは全体的な問題であることが判明しました。

Flex自体は、Unicodeデータの操作方法を知りません。 オートマトンを構築するとき、文字は7または8ビットであると想定されます。



flex-2.5.4a-unicode-patchに出会ったのは、16ビット文字と特定のバージョンの場合のみで、それが暗示するすべてを備えています。



一方、 神聖な神聖な再構築ツールに登るのに汚れた手を必要としない、シンプルで非常に実行可能なソリューションがあります。



発表する

%option 8bit %option c++ ... alpha [A-Za-z] U1 [\x80-\xbf] U2 [\xc2-\xdf] U3 [\xe0-\xef] U4 [\xf0-\xf4] ualpha {alpha}|{U2}{U1}|{U3}{U1}{U1}|{U4}{U1}{U1}{U1} uname ({ualpha}|\_)* ...
      
      



およびvoilà...を使用できます。

 %% ... {uname} { ... yylval.str_ = std::string(yytext); return XyzParser::ttName; }
      
      






All Articles