【问题标题】:C# custom scripting language [duplicate]C#自定义脚本语言[重复]
【发布时间】:2021-06-25 23:23:05
【问题描述】:

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

【问题讨论】:

  • 这是一个相当广泛的问题。您能否将其缩小到更具体的内容?
  • 也许你应该研究一下 WCF(Web 服务)
  • @ChrisGessler:然后他/她有两个问题。

标签: c#


【解决方案1】:

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

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

如果你只是想有一个合理的脚本语言,不一定是看例子,试试 IronRuby、IronPython 甚至 JavaScript 或 C#(命名空间 CompilerServices 允许你动态编译代码,然后加载它(可能在单独的应用程序域中之后可以卸载它)并运行)..

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 更新了链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多