C#自定义脚本语言

时间:2012-08-08 20:13:31

标签: c#

  

可能重复:
  Implementing a scripting language in C#

我有一个C#应用程序,现在我想允许用户从我的应用程序中调用一些方法,例如:

:step2
$test2=Click("post")
Wait()
IF($test2==1){
    runjs("mceRemoveControl")
    Form("post")
    $test3=Input("post_title","$TITLE")
    IF($test3==0){
        GOTO(step2)
    }
}

这是我想在我的应用中解析的自定义语言。方法Click,runjjs,Input是我的C#程序中的方法。我应该在哪里寻找解决此类任务的方法?

2 个答案:

答案 0 :(得分:4)

有许多方法......仅限初学者:

如果您想坚持使用那种时髦的语法,请从http://www.antlr.org/或类似的解析器生成器或框架开始。

如果您只想拥有合理的脚本语言,不一定以示例为例,请尝试IronRuby,IronPython甚至是JavaScript或C#(命名空间CompilerServices允许您动态编译代码,然后加载它(可能在单独的appdomain中)能够在之后卸载它并运行)..

编辑:另一个包含许多解析器/编译器编译器链接的线程:What is a good C# compiler-compiler/parser generator?

答案 1 :(得分:2)

我发现Niklaus Wirth的这本书Compiler Construction对这类任务很有帮助。因为我们在这里讨论创建编译器。这是一本解释形式语言基本方面的小书,解释语法描述语言EBNF并系统地解释如何编写编译器。即使你只有一名翻译。解释器可以被认为是一种特殊的编译器。

请注意这不是一件容易的事。您也可以考虑使用compiler-compilerIrony提供了一种有趣的替代方法。 Irony允许您使用运算符重载直接在C#中指定语言语法。

相关问题