如何为生成的代码复制源代码文件夹结构
How to replicate source code folder structure for generated code
我在 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 中,我希望在 [=24] 中创建 A.obj =] 和 B.obj 在 src-gen/two.
可以使用resource
s getURI()
获取资源的uri。然后您可以使用该 uri 找到带有 src
的段,然后使用以下段来获取路径
我在 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 中,我希望在 [=24] 中创建 A.obj =] 和 B.obj 在 src-gen/two.
可以使用resource
s getURI()
获取资源的uri。然后您可以使用该 uri 找到带有 src
的段,然后使用以下段来获取路径