我有一个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#程序中的方法。我应该在哪里寻找解决此类任务的方法?
答案 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-compiler。 Irony提供了一种有趣的替代方法。 Irony允许您使用运算符重载直接在C#中指定语言语法。