在C#中实现脚本语言

我们有一个项目,我们应该让第三方开发人员创建自己的GUI / CodeBehind驱动程序。 我们的GUI在WPF上运行。

现在,我们有很多可能做到这一点,但我们正在考虑的事情之一是创建某种子Xaml XSD,让我们使用标记创建他们的GUI(如果它是XAML或我们自己的dunno XML-“语言”,然后让他们通过脚本语言执行代码隐藏。

我想到了,这个模型似乎与魔兽世界让人们创建自己的GUI的方式有许多相似之处。 WoW的工作方式是实现LUA脚本语言,然后公开一些自己的API调用。 我们想要类似的行为。

但是,我们处于严格的截止日期,这种实施并不是我们的首要任务。 因此,我正在寻找一个.Net兼容的脚本解析器/“编译器”,以便在我们的项目中使用。 我们使用的哪种脚本语言不是主要问题,我们只是希望能够快速实现它,而不需要过多的模糊。

有谁知道这种图书馆? 或者你们有一个更智能的解决方案来满足这些要求吗?

显然,我们正在梦想创建我们自己的WYSIWYG编辑器和我们自己的领域特定语言,但这对我们来说似乎有些过分。 我们只想要一种脚本语言,它只能通过我们的API进行调用,同时让第三方开发人员使用条件,循环,可能是OO等。

提前致谢 :)

您可以使用IronPython作为脚本语言。 这篇文章给出了如何做到这一点的基本想法 。

你看过CSScript了吗?

Lua和LuaInterface是我们当前项目的选择 – 只需在您的API中使用LuaInterfcae注册方法,并且可以从脚本代码中调用它们。 我们的用户界面使用Scintilla和ScintillaNET作为脚本编辑器。

这可能不是构建复杂用户界面的最佳解决方案,但它是可能的。

我非常同意。 在我的团队中发明新的通用“脚本一堆控制流和对象模型调用”语言是“减去一千分”; 也就是说,这样做的代价是如此之高,而且我们的客户不得不学习一门新语言的成本如此之高,以至于为了摆脱负面区域,其利益必须至少为“一千分”。 有许多脚本语言,您没有必要设计,指定,开发,测试,调试,记录,运送,维护和教导您的客户如何使用; 你可以避免所有这些费用。

如果我是你的话,我只会开发一种新语言,因为它的价值与其他语言非常不同,因为它对特定领域有特殊用途。 听起来你正在开发静态标记DSL,这是一个好主意。 通过使其成为现有标记结构语言的子集,您不必承担构建解析器和词法validation器等的负担。

您是否考虑过在Boo中创建DSL ?

开始时不一定非常困难和复杂,但是如果你以后有更多时间在手上,你可以获得扩展DSL的绝佳选择。

Antlr是词法分析器/解析器生成器。 它比使用Iron Python更复杂,但是,您可以非常轻松地创建自己的DSL,只允许您想要的操作类型。

使用生成的解析器/词法分析器,您可以将其用作实时解释语言,或传统的静态编译语言,或者使用它来生成C#代码,然后编译。

选项非常无穷无尽。

也许你兴趣重新发明轮子,或者想要更好地理解如何用C#编写自己的编程语言工具,请参阅CodeProject.com上使用C#实现编程语言 。