MAGES は YAMP の正式な後継者です。これは、非常にシンプルでありながら強力な式パーサーおよびインタープリターです。 MAGES を使用すると、高度でカスタマイズが簡単な軽量のスクリプト エンジンをアプリケーションに組み込むことができます。
他のアプリケーションの中でも、MAGES は Microsoft の PowerToys で使用されています。
MAGES は、オブジェクト メタデータ、ダイレクト リストのサポート、および JSX 構文を備えて更新されました (v3.0.0)。
2023年:
MAGES が更新され (v2.0.0)、複素数がサポートされました。また、最新の可能性を活用するために、ビルド ターゲットとランタイムが更新されました。
2018年:
最初の安定バージョンがリリースされました。現在のバージョン 1.6.0 には、改良された REPL が含まれています。このライブラリには、C# で軽量のスクリプト操作を実行するためのすべてが含まれています。このライブラリに関する CodeProject の記事 (背景やパフォーマンスの比較も含まれています) も利用できます。
MAGES 自体には依存関係はありませんが、テストは NUnit に依存し、ベンチマークは BenchmarkDotNet を使用します。通常、MAGES は NuGet パッケージ ソースを介してインストールする必要があります。これがうまくいかない場合は、ソースをクローンして自分で MAGES をビルドしてください。すべての単体テストに合格することを確認してください。
ライブラリ全体は、.NET Core 3.0 (以降) / .NET 5.0 (以降) アプリケーションから使用できるように設計されています。これは、(とりわけ) Unity 2021.2 または Mono 6.4 と互換性があることを意味します。 NuGet パッケージは、公式パッケージ フィードから入手できます。
最も単純なケースでは、(変数と関数の) グローバル スコープを保持し、解釈を開始する新しいエンジンを作成します。
var engine = new Mages . Core . Engine ( ) ;
var result = engine . Interpret ( " sin(2) * cos(pi / 4) " ) ; // 0.642970376623918
スニペットから再利用可能なブロックを作成することもできます。
var expOne = engine . Compile ( " exp(1) " ) ;
var result = expOne ( ) ; // 2.71828182845905
または、MAGES によって作成された要素と対話することもできます。
var func = engine . Interpret ( " (x, y) => x * y + 3 * sqrt(x) " ) as Mages . Core . Function ;
var result = func . Invoke ( new Object [ ] { 4.0 , 3.0 } ) ; // 18.0
または、さらに単純です (詳細は入門ドキュメントで説明されています)。
var func = engine . Interpret ( " (x, y) => x * y + 3 * sqrt(x) " ) as Mages . Core . Function ;
var result = func . Call ( 4 , 3 ) ; // 18.0
これらは、より基本的な例のほんの一部です。詳細については、ドキュメントを参照してください。
ドキュメントは、このリポジトリのdocフォルダーに配置される Markdown ドキュメントの形式で提供されます。次のリンクをチェックしてみる価値があります。
何かが不足していたり、不明瞭であったり、間違っていたりする場合は、PR を送信するか、問題を提出してください。詳細については、貢献に関する次のセクションを参照してください。
機能の実装やバグ修正の形での貢献は大歓迎ですが、組織的かつ一貫した方法で実行する必要があります。作業を開始する前に、投稿ガイドラインを必ずお読みください。
バグレポートや機能リクエストの形で貢献も受け付けられます。オープンソース開発万歳!
センバーのルールは私たちの糧です。つまり、これは次のことを意味します。
したがって、同じメジャー バージョン内で重大な変更が行われることは期待しないでください。
MAGES の開発の一部には以下の企業が協賛しました。
プロジェクトに対するすべてのサポートと信頼に感謝します!
MIT ライセンス (MIT)
著作権 (c) 2016-2024 フロリアン・ラップル
本ソフトウェアおよび関連ドキュメント ファイル (以下「ソフトウェア」) のコピーを入手した人には、使用、コピー、変更、マージする権利を含むがこれらに限定されない、制限なくソフトウェアを取り扱う許可が、ここに無償で与えられます。 、以下の条件を条件として、本ソフトウェアのコピーを出版、配布、サブライセンス、および/または販売すること、および本ソフトウェアが提供される人物にそれを許可すること。
上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは主要部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、明示的か黙示的かを問わず、商品性、特定目的への適合性、および非侵害の保証を含むがこれらに限定されない、いかなる種類の保証も行われません。いかなる場合においても、作者または著作権所有者は、契約行為、不法行為、またはその他の行為であるかどうかにかかわらず、ソフトウェアまたはソフトウェアの使用またはその他の取引に起因または関連して生じる、いかなる請求、損害、またはその他の責任に対しても責任を負わないものとします。ソフトウェア。