在C#中实现脚本语言

时间:2009-09-08 13:57:18

标签: c# .net wpf scripting

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

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

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

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

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

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

提前致谢:)

7 个答案:

答案 0 :(得分:15)

您可以使用IronPython作为脚本语言。这是article that gives a basic idea你如何做到的。

答案 1 :(得分:4)

你看过CSScript吗?

答案 2 :(得分:4)

Lua加上LuaInterface是我们当前项目的选择 - 只需在您的API中使用LuaInterfcae注册方法,就可以从脚本代码中调用它们。我们的用户界面使用ScintillaScintillaNET进行脚本编辑。

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

您是否考虑过创建DSL in Boo

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

答案 5 :(得分:1)

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

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

选项非常无穷无尽。

答案 6 :(得分:0)

也许你 对重新发明轮子感兴趣,或者想要更好地理解如何在C#中编写自己的编程语言工具,请参阅CodeProject.com上的Implementing Programming Languages using C#