Mor*_*dir 16 java code-generation abstract-syntax-tree eclipse-jdt
我正在尝试使用JDT/AST生成Java源代码.我现在有了MethodDeclaration,并希望将代码片段(来自其他来源)添加到方法体.代码段可以包含任何Java代码,甚至是语法无效的代码.我只是找不到这样做的方法.
使用JCodeModel,您将使用JBlock#directStatement(String s)方法.
有没有办法用JDT/AST做到这一点?
由于您有一个格式良好的树用于应用程序的其余部分,并且您希望在特定位置插入非格式良好的文本,因此您几乎无法使用标准树节点插入机制执行此操作.
重要的是,您为有效的程序文本生成文本,并将片段插入到正确的位置.在某处必须有一段逻辑将AST打印为文本.您需要做的是要求将AST打印为文本,并在该过程的中间,在必要的精确点处捕获它,以插入您的任意文本.
我们的DMS软件重新设计工具包在其prettyprinter中进入/退出打印节点挂钩,以允许发生这种情况.
如果JDT/AST中不存在这样的东西,你可以尝试修改它的prettyprinter来为你提供这个钩子.或者,您可以考虑通过添加另一个不属于标准集的树节点类型来修改JDT/AST,该节点类型只包含任意文本,但其作用类似于方法节点.据推测,每个节点控制打印的内容; 然后你可以为那个树节点定义漂亮的打印,使它输出它的文本.
最后一个真正的hacky解决方案:在任意文本的位置插入一个完全有效的AST,包含一个具有唯一名称的虚假标识符,例如ZZZ.然后,将AST打印到字符串,并对字符串进行后处理,以使用实际用户文本替换包含唯一名称的伪树.
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |