20 月 2 日月曜日、高速字句解析ジェネレーターである reXNUMXc のリリースがリリースされました。
主な変更点:
-
Go言語のサポートを追加しました
(re2c の --lang go オプションを使用するか、スタンドアロンの re2go プログラムとして有効になります)。
C と Go のドキュメントは同じテキストから生成されていますが、内容は異なります。
コード例。 re2c のコード生成サブシステムは完全に再設計されました。
将来的には新しい言語のサポートが容易になるはずです。 -
CMake に代替ビルド システムを追加しました (ありがとう) ライFX!)
re2c を CMake に変換する試みは長い間行われてきましたが、ligfx が登場するまでは誰も行われませんでした。
完全なソリューションを提供しました。
Autotools の古いビルド システムは引き続きサポートされ、使用されます。
そして近い将来、それを放棄する計画はありません(部分的には、
ディストリビューション開発者にとっての問題、部分的には古いビルドシステムが原因
新しいものよりも安定していて簡潔です)。
どちらのシステムも、Travis CI を使用して同様に継続的にテストされます。 -
使用時に構成にインターフェイスコードを設定する機能を追加しました
汎用 API (汎用 API)。 以前は、ほとんどの API は次の形式で指定する必要がありました。
関数または関数マクロ。 任意の形式で設定できるようになりました。
@@{name} または単に @@ の形式の名前付きテンプレート パラメーターを含む文字列 (場合
パラメータは XNUMX つだけであり、あいまいさはありません)。 API スタイルは構成可能です
re2c:api:style (関数値は関数スタイルを指定しますが、自由形式値は任意です)。 -
-c, --start-conditions オプションの操作が改善され、複数のオプションを組み合わせられるようになりました。
2 つの reXNUMXc ブロック内の相互接続されたレクサー。 今すぐ使用できます
通常のブロックは条件付きブロックと同等であり、いくつかの無関係な条件付きブロックを設定します
ブロックを XNUMX つのファイルにまとめます。
-r、--reuse オプションの改善 (XNUMX つのブロックのコードの再利用)
他のブロックで) -c, --start-conditions および -f, --storable-state オプションと組み合わせて使用
(任意の場所で中断できるステートフルレクサー
後で実行を続行します)。 -
入力データの終わりを処理するために新しく追加されたアルゴリズムのバグを修正しました
(EOF ルール)、まれに誤った処理が発生する場合がありました。
重複するルール。 -
簡素化されたブートストラップ プロセス。 以前は、ビルド システムはすでに動的に検索しようとしていましたが、
自身を再構築するために使用できる re2c を構築しました。
これにより、誤った依存関係が発生しました (依存関係グラフが判明したため)
動的であり、ほとんどのビルド システムはこれを好みません)。
さて、レクサーを再構築するには、明示的に必要です
ビルド システムを構成し、RE2C_FOR_BUILD 変数を設定します。
このリリースに貢献してくれた皆さんに感謝します!
出所: linux.org.ru