代码之家  ›  专栏  ›  技术社区  ›  cwap

在C语言中实现脚本语言#

  •  4
  • cwap  · 技术社区  · 17 年前

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

    现在,我们有很多这样做的可能性,但我们正在考虑的一件事是创建某种子XAML XSD,让它使用标记来创建GUI(不知道它是XAML还是我们自己的XML-“语言”,然后让它们通过脚本语言来完成代码。

    我想了想,这个模型似乎与魔兽世界让人们创建自己的图形用户界面的方式有很多相似之处。Wow的方法是实现Lua脚本语言,然后公开一些自己的API调用。我们想要相似的行为。

    然而,我们正处在一个严格的最后期限上,而这个实施并不是我们的首要任务。因此,我在寻找一个.NET兼容的脚本解析器/“编译器”,在我们的项目中使用。我们使用的哪种脚本语言不是一个主要问题,我们只是希望能够很快地实现它,而不需要太多的模糊。

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

    显然,我们梦想着创建自己的WYSIWYG编辑器和特定于领域的语言,但这对我们来说似乎是多余的。我们只需要一种脚本语言,它只能通过我们的API进行调用,同时允许第三方开发人员使用条件、循环,或者OO等。

    事先谢谢:)

    7 回复  |  直到 14 年前
        1
  •  15
  •   Tim M.    14 年前

    您可以使用Ironpython作为脚本语言。这是一个 article that gives a basic idea 你怎么能做到。

        2
  •  4
  •   Brandon    17 年前

    你看过吗 CSScript ?

        3
  •  4
  •   Daniel Brückner    17 年前

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

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

        4
  •  3
  •   Eric Lippert    17 年前

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

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

        5
  •  1
  •   Mark Seemann    17 年前

    你考虑过创造一个 DSL in Boo 是吗?.

    开始并不一定很难,也不一定很复杂,但是如果以后有更多的时间掌握在手中,您就可以获得扩展DSL的极好选择。

        6
  •  1
  •   Darien Ford    17 年前

    Antlr 是一个lexer/parser生成器。它比使用Iron Python要复杂一些,但是,您可以相当容易地创建自己的DSL,只允许您想要的操作类型。

    使用生成的Parser/Lexer,您可以将它用作实时解释语言,或者传统的静态编译语言,或者使用它生成C代码,然后编译。

    选择是无穷无尽的。

        7
  •  0
  •   cdiggins    15 年前

    也许你 是 有兴趣重新发明轮子,或者想更好地理解如何用C语言编写自己的编程语言工具,请参见 Implementing Programming Languages using C# 在codeproject.com.

    推荐文章