flexは UTF-8 入力をサポートしていないようです。スキャナーが非 ASCII 文字を検出すると、それが EOF であるかのようにスキャンを停止します。
Flex に UTF-8 文字を強制的に使用させる方法はありますか? 実際にUTF-8文字と一致させたくないので、「。」を使用するときにそれらを食べてください。パターン。
なにか提案を?
編集
最も簡単な解決策は次のとおりです。
任意 [\x00-\xff]
「.」の代わりに「ANY」を使用します。私のルールで。
flexは UTF-8 入力をサポートしていないようです。スキャナーが非 ASCII 文字を検出すると、それが EOF であるかのようにスキャンを停止します。
Flex に UTF-8 文字を強制的に使用させる方法はありますか? 実際にUTF-8文字と一致させたくないので、「。」を使用するときにそれらを食べてください。パターン。
なにか提案を?
編集
最も簡単な解決策は次のとおりです。
任意 [\x00-\xff]
「.」の代わりに「ANY」を使用します。私のルールで。
私はこれを自分で調べ、Flex メーリング リストを読んで、誰かが考えているかどうかを確認しました。Flex に Unicode を読み取らせるのは複雑な作業です...
UTF-8 エンコーディングを実行できます。他のほとんどのエンコーディング (16 秒) では、オートマトンを駆動する大規模なテーブルが作成されます。
これまでの一般的な方法は次のとおりです。
私が行ったことは、単一の UTF-8 文字に一致するパターンを単純に記述することでした。これらは次のようなものですが、UTF-8 仕様を読み直したいと思うかもしれません。これはかなり前に書いたものだからです。
もちろん、単一の文字だけでなく Unicode 文字列が必要なため、これらを組み合わせる必要があります。
UB [\200-\277] %%
[\300-\337]{UB} { do something }
[\340-\357]{UB}{2} { do something }
[\360-\367]{UB}{3} { do something }
[\370-\373]{UB}{4} { do something }
[\374-\375]{UB}{5} { do something }
メーリングリストより引用。
さらに詳しく調べた後、UTF-8 サポート用の適切なパッチを作成することを検討するかもしれません。上記の解決策は、大きな .l ファイルでは維持できないようです。そして本当に醜いです!同様の範囲を使用して「.」を作成できます。すべての ASCII および UTF-8 文字に一致する代わりのルールですが、それでもかなり醜いです。
お役に立てれば!
negatet 文字クラスを記述することも役立つ場合があります。
[\n \t] WITESPACE を返します。[^\n \t] NON_WHITESPACE を再実行