当前位置: 首页 > 知识库问答 >
问题:

使用Xtext生成的工件

丌官星渊
2023-03-14

我目前正在研究Xtext,以创建一个可重用的DSL和一个构建在DSL之上的工件。简化后的项目布局如下:

  • Projecta:包含基于XText的DSL、feature-project、updatesite等。
  • projectb:使用projectA中的工件生成html" target="_blank">代码。
  • projectc:使用从projectb生成的代码

使用Maven和Xtext构建projectA不是问题(网上已经有几个例子了),但我不知道如何在projectB中使用projectA的DSL,并将生成的代码释放到ProjectC中使用。教程、文档和我能找到的每个示例都在使用projectA生成的Eclipse插件在ProjectB中生成代码。虽然这样做很好,但我想知道如何重用生成的代码。

在我看来,我似乎错过了一些明显的东西。所以任何指针,提示,例子都是欢迎的!

共有1个答案

慕容俭
2023-03-14

可以使用Fornax MWE runner从Xtext生成代码(遗憾的是,在Maven Central中没有,但在http://www.fornax-platform.org/m2/repository中没有)。

我们在基于Tycho的编译的EMF-IncQuery(对应的pom文件)中使用这种方法

1。将clean插件配置为清空src-gen和xtend-gen文件夹(来自所有相关项目,如core、test和ui项目)2。使用Fornax插件执行MWE2工作流3。执行Xtend编译器(一些代码生成为Xtend类)

首先,您必须以一种在无头环境中可集成的方式实现您的语言/编译器(请参见xtend-maven-compiler的打包方式)。

您的语法已经有了一个生成器(实现IGenerator接口),它接收模型和一个用于创建文件的帮助器类。对于使用XBase的语法,这个生成器是由Xtext实现的,否则您应该已经实现了它。

然后,您可以提供一个利用此生成器的附加项目,从而能够生成这样的代码。基本上,使用您的语言StandaloneSetup/Headless injector来获得IGenerator实例(在新项目中),并添加一个根据构建参数化的新FileSystemAccess实例。

 类似资料:
  • 我目前正在为一个遗留项目创建一个Maven构建,并试图在Maven构建中执行Xtext语言的编译,如下所述。我能够运行构建,但是一旦maven启动Xtext MWE2工作流,我就会在工作流中遇到以下问题: 我还用该语言手动检查了。xtext文件中是否有松散的“-”符号,但找不到。关于如何调试此问题有任何线索吗?我甚至不确定从哪里开始挖。

  • 我正在尝试使用xText和xtendbuilding与gradle创建第一个项目。 我按照xText文档中的指导创建了语法,还创建了xtend生成器。 在eclipse中,代码按预期生成到src-gen文件夹。 当我创建gradle脚本时,也遵循http://xtext.github.io/xtext-gradle-plugin/xtext-builder.html来构建我的代码,而不是在它生成的

  • 我是Xtext和Xtend的新手,正在尝试使用Xtext文档中的Xtext教程学习Xtext。我正在使用Xtext 2.14在Java10下运行Eclipse光子。我刚开始学习扩展教程,很早就遇到了一个问题。以下是我尝试使用代码生成器的代码: 这是我的语法文件: 我的问题是Eclipse说@Inject注释有问题,它说,这是在一个Eclipse Xtext项目中根据教程中的说明生成的。 我该如何从

  • 我正在以编程方式运行Mwe2工作流,为了成功运行此工作流,我需要将Terminals.xtext的referencedResource添加到GenerateYourdsl.Mwe2文件中。提到的GenerateYourdsl.mwe2文件是在我创建新项目时由Xtext生成的--我没有修改它。是否有可能从这个工作流中获取对象,用Java访问它,并将这个属性添加到工作流组件属性的语言属性中? 以下是工

  • 我用Xtext写了一个DSL。我想要的是执行DSL,从中获得一些好的结果。 我编写了myDslGenerator类,在xtend中实现接口IGenerator,以生成java代码,它运行良好。 我有两个问题; 解释器和代码生成器有什么区别?不都是为了执行DSL吗? 如何编写一个解释器?有没有一步一步的教程链接?我找到了许多使用xint生成代码的教程,但找不到任何用于编写解释器的教程。 谢谢你, 萨

  • Yaf提供了代码生成工具yaf_code generator, 所以也可以通过使用代码生成工具yaf_cg来完成这个简单的入门Demo 例 3.10. 代码生成工具的使用 php-yaf-src/tools/cg/yaf_cg sample 将得到的sample目录, 拷贝到Webserver的documentRoot目录下然后访问: 例 3.11. 在浏览器输入 http://www.y