MAGES 是 YAMP 的正式繼承者。它是一個非常簡單但功能強大的表達式解析器和解釋器。您可以使用 MAGES 將複雜的、易於自訂的輕量級腳本引擎添加到您的應用程式中。
在其他應用程式中,MAGES 已用於 Microsoft 的 PowerToys。
MAGES 剛剛更新(v3.0.0),包含物件元資料、直接清單支援和 JSX 語法。
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
這些只是一些更基本的範例。更多資訊可以在文件中找到。
文件以 Markdown 文件的形式給出,放置在該儲存庫的doc資料夾中。以下連結值得查看:
如果有任何遺漏、不清楚或錯誤的內容,請提交 PR 或提出問題。有關更多信息,請參閱以下有關貢獻的部分。
非常歡迎以功能實現或錯誤修復形式做出的貢獻,但需要以有組織且一致的方式進行。在開始任何工作之前應閱讀貢獻指南。
貢獻也可以以錯誤報告和功能請求的形式提供。開源開發萬歲!
semver 的規則是我們的麵包和奶油。簡而言之,這意味著:
因此:不要期望在同一主要版本中出現任何重大變更。
以下公司贊助了 MAGES 的部分開發。
感謝大家對專案的支持與信任!
麻省理工學院許可證 (MIT)
版權所有 (c) 2016-2024 弗洛里安·拉普爾
特此免費授予任何獲得本軟體和相關文件文件(「軟體」)副本的人不受限制地使用本軟體,包括但不限於使用、複製、修改、合併的權利、發布、分發、再授權和/或銷售軟體的副本,並允許向其提供軟體的人員這樣做,但須滿足以下條件:
上述版權聲明和本授權聲明應包含在本軟體的所有副本或主要部分中。
本軟體以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性、特定用途的適用性和不侵權的保證。 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE軟體.