19月XNUMX日(火)発売 re2c – 字句アナライザーのジェネレーター (正規表現をターゲット プログラミング言語のコードに変換するコンパイラーでもあります)。 re2c は、高速かつ簡単にインライン レクサーを生成することに特化しています。これは、柔軟なインターフェイス、最適化された非表形式レクサーの生成、およびタグ付きの決定論的有限状態マシンに基づく部分一致抽出のサポートという点で、よりよく知られているアナログ フレックスとは異なります (TDFA)。 re2c は、Ninja や PHP など、レクサーの速度が重要なプロジェクトで使用されます。
リリース 4.0 では、コード生成サブシステムが根本的に再設計され、すでにサポートされている言語 (C) に加えて、2 つの新しい言語 (D、Haskell、Java、JavaScript、OCaml、Python、V、Zig) のサポートを追加できるようになりました。 /C++、Go、Rust)、および構成ファイルを通じて新しい言語を追加するための一般的なメカニズム。コード ジェネレーターは、すでに構築され最適化された有限状態マシンをコードに変換する責任を負います。つまり、そのタスクは、ターゲット言語に適した制御構造、データ型、一般的なプログラム モデルなどを選択することです。以前は、このロジックはすべて re2c ソース コードの一部であり、ソース コードを変更したり新しい言語を追加したりするには、ソース コードにパッチを適用して reXNUMXc を再構築する必要がありました。このようなパッチは、サンプルとテストの標準セットを実装しない限りメイン リポジトリに受け入れられず、プロセス全体がさらに複雑になりました。これで、このロジックはすべて次の場所に転送されました。 構文ファイル – ユーザーが提供できるテキスト構成ファイル (re2c はデフォルトで標準のものを使用します)。 re2c ソース コードには言語固有の詳細はまったく含まれておらず、構文ファイルのみに依存しています。ユーザーは、既存の構文ファイルを部分的にオーバーライドしたり、新しい構文ファイルを最初から作成したりできます。公式にサポートされているすべての言語については、 例を含む完全なドキュメント.
ちなみに、構文ファイルというアイデア自体は、次のおかげで生まれました。 耳鼻咽喉科に関するコメント、それはありがとう
コーダー.
このリリースには、ユーザー インターフェイスを簡素化し、キャプチャ グループの作業を改善するための他の多くの変更が含まれており、サンプルを編集およびコンパイルするためのオンライン環境も追加されました。 http://re2c.org/playground.
出所: linux.org.ru
