首页 > 解决方案 > 如何为生成的代码复制源代码文件夹结构

问题描述

我在 Xtext 中创建了一个简单的 DSL。我所有的源文件(“ .src”)都在“src”下的一组文件夹中。我希望在“src-gen”中创建生成的文件(“ .obj”),但保留源文件的文件夹结构。

以下(默认)代码输出同一文件夹(“src-gen”)中的所有文件。

override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {

  // Root node of parsing tree

  val Program prg = resource.allContents.filter(Program).next()

  // Compiled code

  var String code = prg.compile().toString()

  // change file extension

  val outName = ....

  // Generate output

  fsa.generateFile(outName, code)

  ...

如果文件 A.src 在文件夹 src/one 中,而 B.src 在文件夹 src/two 中,我希望在 src-gen/one 中创建 A.obj,在 src-gen/two 中创建 B.obj。

标签: xtext

解决方案


您可以使用resourcesgetURI()获取资源的 uri。然后您可以使用该 uri 来查找段,src然后使用以下段来获取路径


推荐阅读