所以我有一个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函数将执行什么操作?
最佳答案
doGenerate函数的参数是基于EMF的资源(基本上是文本文件的模型表示-换句话说,是具有已解析链接的AST)和用于写入文件系统的帮助程序类。
generators的任务是创建生成的源代码(通常是Java,但这不是必需的)。有关示例,请参见博客文章http://www.rcp-vision.com/?p=1573-最后使用的是示例代码生成器。