gpt4 book ai didi

eclipse - 解释器与代码生成器 Xtext

转载 作者:行者123 更新时间:2023-12-04 19:11:47 26 4
gpt4 key购买 nike

我有一个使用 Xtext 编写的 DSL。我想要的是执行那个 DSL 来执行一些好的事情。

我在 xtend 中编写了实现接口(interface) IGenerator 的 myDslGenerator 类来生成 java 代码,它工作正常。

我有两个问题;

  • 解释器和代码生成器有什么区别?
    不是都用于执行 DSL 吗?
  • 如何编写解释器?有分步教程链接吗?我找到了许多使用 xtend 生成代码的教程,但找不到任何用于编写解释器的教程。

  • 谢谢,

    萨尔曼

    最佳答案

    基本上,解释器和代码生成器的工作方式完全不同。代码生成器就像一个编译器:它们用另一种语言创建你的 DSL 的可执行代码;另一方面,解释器用于遍历您的 DSL 并在您自己的环境中执行它们。这意味着,生成的代码不必(但当然可以)依赖于您的 DSL,可以更快/更优化;虽然解释器需要了解您的语言的结构,但可以在您的开发 IDE 中执行,而不需要运行其他应用程序。

    AFAIK Xtext 不支持编写解释器,它有点超出了他们的范围(不完全 - 对于 Xbase 表达式,有一个 XbaseInterpreter 实例,可以重用 - 只要您正确设置其类路径),因为它们非常特定于语言。

    我也不知道任何关于解释 Xtext DSL(甚至不是 XbaseInterpreter)的分步教程,但它基本上归结为 AST 的遍历,并且随着节点的遍历,相应的语句被动态执行.为了使这种遍历按预期工作,解释器必须维护变量和其他引用的(可能是分层的)上下文。

    关于eclipse - 解释器与代码生成器 Xtext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296582/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com