首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新AST CDT

刷新AST CDT
EN

Stack Overflow用户
提问于 2018-10-14 19:11:14
回答 1查看 45关注 0票数 1

我通过ASTRewrite在AST中做了一些更改,并通过Change.perform应用了这些更改,C文件已经正确地更新了新的更改(插入新节点),但在调试模式下,AST对象感觉不到这些更改

代码语言:javascript
复制
    ast.getRawSignature(); // C file code as text
    ASTRewrite rewriter = ASTRewrite.create(ast);
    addNewNode(node, ast, rewriter); //Inserting some node
    Change c = rewriter.rewriteAST();
            try {
                c.perform(new NullProgressMonitor());
            } catch (CoreException e) {
                e.printStackTrace();
            }
    /**WHAT I WANT TO FLUSH THE AST HERE TO FEEL THE CHANGES**/
    ast.getRawSignature(); //it still the same C old code and the C file already updated

我需要刷新AST才能感受到AST对象本身的变化,我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-10-15 00:28:22

在一个AST被初始构造之后,它不再是可变的(在它上调用IASTTranslationUnit.freeze(),并且任何进一步尝试调用该AST中的节点上的setter都将失败)。

这意味着Change.perform()不能在AST上执行更改,只能在文件上执行更改。要获得反映这些更改的AST,您需要构建一个新的AST。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52802032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档