llvm clang AST 介绍

我现在工作中要写个fuzz引擎,语法分析部分用到了clang的接口,打算写一些博客记录绍下,ast(抽象语法树),libtooling接口的使用等等

llvm clang AST 介绍

Clang的AST与其他一些编译器生成的AST不同,它与书写的C++代码和C++标准非常相似。例如,括号表达式和编译时常量在AST中以未简化的形式存在。这使得Clang的AST非常适合重构工具。

所有Clang AST节点的文档可以通过生成的Doxygen访问。Doxygen在线文档也被您喜欢的搜索引擎索引,因此通常搜索clang和AST节点的类名就可以找到您要查找的类的doxygen文档(例如,搜索:clang ParenExpr)

检查AST (抽象语法树)

了解AST结构,对于调试、性能优化、代码分析和重构等方面都非常有帮助

生成AST结构命令

命令1(常用)

clang -Xclang -ast-dump -fsyntax-only test.cc

命令2(ast结构更精确)

conmmand_json.cc里的编译命令 + -Xclang -ast-dump -fsyntax-only

以上2种方式生成ast语法树都可以 下面是生成ast的结构

$ cat test.cc
int f(int x) {
  int result 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值