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#程序中的方法。我应该在哪里寻找这样的任务的解决方案?
答
的方法有很多..只是个开始:
如果你想坚持与时髦的语法,与http://www.antlr.org/或类似的解析器发电机或框架开始。如果你只是想要合理的脚本语言,但不一定是这个例子,试试IronRuby,IronPython甚至是JavaScript或C#(命名空间CompilerServices允许你在运行时编译代码,然后加载它(可能在单独的appdomain能够事后卸载)并运行)..
编辑:有很多的链接解析器/ compilercompilers另一个线程:What is a good C# compiler-compiler/parser generator?
答
我发现这本书Compiler Construction从尼克劳斯·维尔特成为这种类型的有用任务。因为我们正在讨论在这里创建一个编译器。它是一本解释形式语言基本方面的小书,解释了语法描述语言EBNF并系统地解释了如何编写编译器。即使你只是一个口译员。解释器可以被认为是一种特殊的编译器。
请注意,这不是一件容易的事。你也可以考虑使用compiler-compiler。 Irony提供了一个有趣的替代方法。 Irony允许您使用运算符重载直接在C#中指定语言语法。
这是一个相当广泛的问题。你能把它缩小到更具体的东西吗? – Nathan 2012-08-08 20:14:48
也许你应该看看WCF(Web Services) – 2012-08-08 20:17:47
@ChrisGessler:然后他/她有两个问题。 – leppie 2012-08-08 20:21:07