フレックスと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; } 

Source: https://habr.com/ru/post/J192556/


All Articles