xtext - 如何为生成的代码复制源代码文件夹结构
问题描述
我在 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。
解决方案
您可以使用resource
sgetURI()
获取资源的 uri。然后您可以使用该 uri 来查找段,src
然后使用以下段来获取路径
推荐阅读
- javascript - bulkCreate 在 sequelize 中建立联结表数据用于建立多对多关联
- apache - 树莓派上的 apache 使用 system() 调用 bash 脚本不会写入文件
- node.js - 弹性搜索 match_all 过滤器仅在指定大小时返回所有文档
- c++ - 输入验证帮助 - 将额外输入添加到下一个变量
- java - 如何从地图中的标记获取纬度和经度
- javascript - 如何有效地实现 addEventListener?
- sql-server - 如果查询没有结果,如何返回消息但如果有结果则显示结果?
- c++ - 为什么在 C++ 中允许重新声明模板成员函数?
- jasper-reports - 检查报告中时间戳的空值
- makefile - 交叉编译时出错 shared so 依赖于另一个 so