【问题标题】:Interpreter vs. Code Generator Xtext解释器与代码生成器 Xtext
【发布时间】:2013-01-13 22:46:12
【问题描述】:

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

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

我有两个问题;

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

谢谢,

萨尔曼

【问题讨论】:

    标签: eclipse interpreter dsl xtext


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多