【问题标题】:How to generate AST using Xtext and Xtend?如何使用 Xtext 和 Xtend 生成 AST?
【发布时间】:2012-01-20 20:54:13
【问题描述】:

所以我有一个 xtext 语法的默认示例。

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

Model:
    greetings+=Greeting*;

Greeting:
    'Hello' name=ID '!';

我想查看抽象语法树 - 特别是我想要相应的 xtend 文件,看起来像

package org.xtext.example.mydsl.generator

import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.xtext.generator.IGenerator
import org.eclipse.xtext.generator.IFileSystemAccess

class MyDslGenerator implements IGenerator {

    override void doGenerate(Resource resource, IFileSystemAccess fsa) {
        //TODO implement me
    }
}

在调用 doGenerate 时打印出 AST 的文本版本。我已经对此进行了大约两天的破解,但我显然错过了一些基本的东西——有人同情我吗? doGenerate 函数中会发生什么?

【问题讨论】:

    标签: eclipse xtext xtend


    【解决方案1】:

    doGenerate 函数的参数是基于 EMF 的资源(基本上是文本文件的模型表示 - 换句话说,链接已解析的 AST)和用于写入文件系统的辅助类。

    生成器的任务是创建生成的源代码(通常是 Java,但这不是必需的)。例如,请参阅博客文章 http://www.rcp-vision.com/?p=1573 - 最后使用了示例代码生成器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多