re2c レクサージェネレーター 2.0 のリリース

開催されました 解放する re2c 2.0、C および C++ 言語用の無料の字句解析ジェネレーター。 re2c プロジェクトはもともと、非常に高速な字句アナライザーの実験的なジェネレーターとして 1993 年に Peter Bamboulis によって作成されました。このプロジェクトは、生成されるコードの速度と、アナライザーを既存の言語に簡単かつ効率的に組み込むことができる非常に柔軟なユーザー インターフェイスによって他のジェネレーターとは区別されます。コードベース。 それ以来、このプロジェクトはコミュニティによって開発され、形式文法と有限状態マシンの分野における実験と研究のプラットフォームであり続けています。

主な変更点:

  • Go 言語のサポートが追加されました (re2c の「--lang go」オプションによって、または別個の re2go プログラムとして有効になります)。 C と Go のドキュメントは同じテキストから生成されていますが、コード例は異なります。 re2c のコード生成サブシステムは完全に再設計されており、将来的には新しい言語のサポートが容易になるはずです。
  • CMake に代替ビルド システムを追加しました (ありがとう) ライFX!)。 re2c を CMake に変換する試みは長い間行われてきましたが、ligfx が登場するまでは誰も本格的なソリューションを提案していませんでした。 古い Autotools ビルド システムは引き続きサポートおよび使用されており、近い将来に廃止する予定はありません (ディストリビューション開発者にとって問題が発生するのを避けるためでもあります。また、古いビルド システムが新しいビルド システムよりも安定していて簡潔であるためでもあります) )。 どちらのシステムも、Travis CI を使用して継続的にテストされています。
  • 汎用 API を使用する場合に、構成でインターフェイス コードを指定する機能が追加されました。 以前は、ほとんどの API は関数または関数マクロの形式で指定する必要がありました。 現在は、「@@{name}」形式または単に「@@」形式の名前付きテンプレート パラメーターを使用して、任意の文字列の形式で指定できるようになりました (パラメーターが 2 つだけで、あいまいさがない場合)。 API スタイルは、reXNUMXc:api:style 設定によって設定されます (関数値は関数スタイルを指定し、フリーフォームは任意のスタイルを指定します)。
  • 「-c」、「-start-conditions」オプションの操作が改善され、相互接続された複数のレクサーを 2 つの reXNUMXc ブロックに結合できるようになりました。 通常のブロックと条件付きブロックを使用し、XNUMX つのファイル内で関連のない複数の条件付きブロックを定義できるようになりました。 「-c」、「--start-conditions」および「-f」、「--」と組み合わせた「-r」、「--reuse」オプション(あるブロックのコードを他のブロックで再利用)の動作が改善されました。 「storable-state」オプション (いつでも中断でき、後で実行を継続できるステートフル レクサー)。
  • 最近追加された入力終了 (EOF ルール) アルゴリズムのバグを修正しました。まれに、重複するルールが正しく処理されませんでした。
  • ブートストラップ プロセスが簡素化されました。 以前は、ビルド システムは、それ自体を再構築するために使用できる、すでに構築されている re2c を動的に検索しようとしていました。 これにより、誤った依存関係が発生しました (依存関係グラフが動的であり、ほとんどのビルド システムがこれを好まないため)。 ここで、レクサーを再構築するには、ビルド システムを明示的に構成し、RE2C_FOR_BUILD 変数を設定する必要があります。

出所: オープンネット.ru

コメントを追加します