2

可能重复:
在 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# 程序中的方法。我应该在哪里寻找此类任务的解决方案?

4

2 回答 2

4

有很多方法..只是初学者:

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

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

编辑:另一个有很多指向解析器/编译器的链接的线程:什么是好的 C# 编译器/解析器生成器?

于 2012-08-08T20:18:32.943 回答
2

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

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

于 2012-08-08T20:24:33.567 回答