哪一种工具具有创建文本外部DSL进行简单代码转换的最简单方法?

时间:2019-03-20 19:40:17

标签: dsl workbench code-translation

在我的应用程序中,我必须输入特定域的一些代码,并且我想为此创建一个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"
}

此代码应被翻译成通用语言(例如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肯定是完全很棒的东西,但我不想要投影编辑器,而只是纯文本

(这可能是错误的,到目前为止我还没有使用过)

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

1 个答案:

答案 0 :(得分:0)

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

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

干杯!