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

标签 eclipse interpreter dsl xtext

我有一个使用 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/

    相关文章:

    java - SonarQube 无法识别某些 Lombok 注释 - Jacoco 的误导性测试覆盖率结果

    java - Java 解释器是否将字节码文件转换为可执行文件?

    C++ 域特定的嵌入式语言运算符

    java - 无法解析 Java SE 标准类的导入 XXX

    java - 将本地jar添加到mvn clean package结果中

    php - 如何在 PHP 中实现 Django 和 RoR 使用的 URL 模式解释器

    python - 为什么 python 在解释之前将源代码编译为字节码?

    elasticsearch - 如何获得多个精确匹配词组

    programming-languages - 面向语言的编程文章/论文/教程

    java - 在java中的SWT树中父子树中检查和取消选中组合