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 弗洛里安·拉普尔
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。