使用CDT的抽象语法树API生成/编写C代码?

时间:2013-01-07 14:18:58

标签: java eclipse eclipse-cdt abstract-syntax-tree

我已经能够使用CDT的AST API成功解析源代码。我的问题涉及相反:如何以编程方式构建C AST,然后告诉它将自己写入文件?我见过类ASTWriter(但这是内部的),并且找不到有关构建实际AST的任何教程或文档。

我找到了一篇论述了我想要做的事情:Generating Rewritable Abstract Syntax Trees如果我可以构建树并说“自己写”,那么生成代码似乎很容易。这在CDT中是否可行?我如何开始(最好没有弃用/内部方法?)

2 个答案:

答案 0 :(得分:2)

您需要的是使用ASTWriter:

ASTWriter writer = new ASTWriter()
String code = writer.write(myAST);

然后你可以将字符串转储到eclipse资源插件上下文中的文件。

答案 1 :(得分:1)

我建议您首先浏览CRefactoring及其子类(例如ExtractFunctionRefactoring)。

CDT重构框架试图解决许多问题:

  1. 让用户在实际将更改提交到源代码之前预览更改。
  2. 操作未保存的文件错误(例如,重新构建未保存的源代码编辑器中的代码)
  3. 在新生成的代码中尊重用户代码格式设置。
  4. 跨越多个源文件的可撤销事务。
  5. 我很确定即使你不需要所有这些功能,这两个类应该是一个很好的起点。