gpt4 book ai didi

clang - 如何使用 clang 在另一个语句之前检测一个语句

转载 作者:行者123 更新时间:2023-12-04 15:34:21 27 4
gpt4 key购买 nike

我必须通过在它之前添加一个语句来检测 clang 中的某些语句。我有一个指向 Expr 对象的指针,我需要在包含它的语句之前插入另一个语句。现在我正在使用一种hacky方法,它只是将 SourceLocation 指针移回,直到我看到 ;或 } 或 {。但这并不适用于所有情况。例如,当我尝试检测 for 语句时,它失败了。 clang 中是否有任何类提供了一种以更简洁的方式执行此操作的方法?

编辑:这是我的代码片段。我需要在包含指针取消引用的语句之前插入一个断言。

bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
if (E->getOpcode() == UO_Deref ){
Expr *e1 = E->getSubExpr();
SourceLocation SL = E->getLocStart();
}
return true;
}

最佳答案

您可以使用 getSourceRange() 在返回 SourceRange 的语句上SourceRange 类有 getBegin()这将返回 SourceLocation .

您可以结帐https://github.com/eschulte/clang-mutate并在那里查看示例...

编辑 :

为了从 Stmt 中提取 Expr,您可以查看这个 SO 问题 How to get Stmt class object from Expr object in Clang

关于clang - 如何使用 clang 在另一个语句之前检测一个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21888080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com