C#自定义脚本语言

问题描述:

可能重复:
Implementing a scripting language in C#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#程序中的方法。我应该在哪里寻找这样的任务的解决方案?

+5

这是一个相当广泛的问题。你能把它缩小到更具体的东西吗? – Nathan 2012-08-08 20:14:48

+0

也许你应该看看WCF(Web Services) – 2012-08-08 20:17:47

+5

@ChrisGessler:然后他/她有两个问题。 – leppie 2012-08-08 20:21:07

的方法有很多..只是个开始:

如果你想坚持与时髦的语法,与http://www.antlr.org/或类似的解析器发电机或框架开始。如果你只是想要合理的脚本语言,但不一定是这个例子,试试IronRuby,IronPython甚至是JavaScript或C#(命名空间CompilerServices允许你在运行时编译代码,然后加载它(可能在单独的appdomain能够事后卸载)并运行)..

编辑:有很多的链接解析器/ compilercompilers另一个线程:What is a good C# compiler-compiler/parser generator?

我发现这本书Compiler Construction从尼克劳斯·维尔特成为这种类型的有用任务。因为我们正在讨论在这里创建一个编译器。它是一本解释形式语言基本方面的小书,解释了语法描述语言EBNF并系统地解释了如何编写编译器。即使你只是一个口译员。解释器可以被认为是一种特殊的编译器。

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