哪个工具提供了创建文本外部DSL以进行简单代码转换的最简单方法?

问题描述 投票:0回答:1

在我的应用程序中,我必须为特定域键入一些代码,我想为此创建一个DSL。 DSL应该有一些非常基本的命令。

DSL代码示例:

srccode{
    code: "if("
    func: insertInputData(1)
    code: "){\n    "
    func: insertOutputData(0)
    code: "\n}\n"
    cond: checkForOutputConnection(1):
        code: "else{\n    "
        func: insertOutputData(1)
        code: "\n}\n"
}

这段代码应该被翻译成通用语言(f.ex.Python)的源代码,如下所示:

def getSrcCode():
    s = ""
    s += "if("
    s += insertInputData(1)
    s += "){\n    "
    s += insertOutputData(0)
    s += "\n}\n"
    if(outputConnected(1)):
        s += "else{\n    "
        s += insertOutputData(1)
        s += "\n}\n"
    return s

所以它实际上只是一个简单的翻译。

  • Xtext似乎在不迟于尝试将其集成到其他(非Java)应用程序中时变得相当复杂,而且似乎与Java相似。
  • JetBrains MPS肯定是非常棒的东西,但我不想要一个投影编辑器,只需要纯文本

(这可能是错的,到目前为止我没有使用它们中的任何一个)

您建议我使用哪种工作台或工具来实现将代码轻松转换为其他语言的可能性(如我所示)(我更喜欢某些东西,但在某种程度上相当有限,但在满足我的低需求时易于学习和使用)。

dsl workbench code-translation
1个回答
0
投票

确实,您无法摆脱MPS中的投影编辑器,但是通过良好的DSL设计,您可以限制最终用户并控制其流量。

如果你决定给投影编辑器一个机会,这就是你需要的插件http://dslfoundry.com/first-prototype-of-plaintextflow-released/

干杯!

© www.soinside.com 2019 - 2024. All rights reserved.