当前位置: 首页 > news >正文

做网站报价出名的2021年近期舆情热点话题

做网站报价出名的,2021年近期舆情热点话题,做短袖的网站,内部网站建设计划1,clang query 概述 作用: 检查一个程序源码的抽象语法树,测试 AST 匹配器; 帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配; 2,clang-query 安装 准备: git clone --recursive https://git…

1,clang query 概述

作用:
检查一个程序源码的抽象语法树,测试 AST 匹配器;
帮助检查哪些 AST 节点与指定的 AST 匹配器相匹配;


2,clang-query 安装


准备:

git clone --recursive https://github.com/llvm/llvm-project.git
cd llvm-project/
git checkout  llvmorg-3.5.0
cp -r ./clang ./llvm/tools/
cp -r clang-tools-extra ./llvm/tools/clang/tools/extra
mkdir build_d ../local_d
cd build_d #其绝对路径为:/home/hipper/llvm_3_4_0_ex/browse/local_d,如下配置所用

配置:

cmake -G "Unix Makefiles"            \
-DCLANG_ENABLE_STATIC_ANALYZER=1     \
-DLLVM_ENABLE_ASSERTIONS=On          \
-DCMAKE_BUILD_TYPE=Debug             \
-DCMAKE_INSTALL_PREFIX=/home/hipper/llvm_3_4_0_ex/browse/local_d   \
-DLLVM_ENABLE_LIBCXX=1               \
-DLLVM_ENABLE_PROJECTS="all"         \../llvm

编译安装:

make -j34
make install
cp bin/clang-query /home/hipper/llvm_3_4_0_ex/browse/local_d/bin/


3,测试运行

待测试程序源代码:
hello.c
 

hello.cextern int write(int, const char*, unsigned long);int main(){write(1, "Hello, ", 7);write(1, "world", 5);write(1, "!\n", 2);return 0;}

测试:
 

$ clang-query hello.c --

效果:

识别出函数调用表达式,并打印出来了

4, 更多测试


wildanimal-sim.cpp

class Plane{public:int run(int x)
{return 10*x;
}};class Animal {
public:int position;
public:Animal(int pos) : position(pos) {}// Return new positionint run(int quantity) {return position += quantity;}
};
class Cat : public Animal {
public:Cat(int pos) : Animal(pos) {}void meow() {}void destroySofa() {}bool wildMood() {return true;}int run(int quantity){return position += 2*quantity;}
};
int main() {Cat c(50); c.meow();if (c.wildMood())c.destroySofa();c.run(2);Plane pp;pp.run(3);return 0;
}

可以直接输出 AST 的clang 命令:

clang -Xclang -ast-dump hello.c
clang -cc1 -ast-dump hello.c

clang-query  wildanimal-sim.cpp

测试如下命令:


 

clang-query> set output dump
clang-query> match recordDecl()
clang-query> match methodDecl(hasName("run"))
clang-query> match     recordDecl(isSameOrDerivedFrom(hasName("Animal")))
clang-query> match     recordDecl(allOf(hasMethod(methodDecl(hasName("run"))),   isSameOrDerivedFrom(hasName("Animal"))))


LLVM-18:
 

clang-query> match cxxMemberCallExpr()
clang-query> match cxxMemberCallExpr(callee(memberExpr(member(hasName("run")))))
# not work。 clang-query> match cxxMemberCallExpr(callee(memberExpr(member(hasName("run")))), thisPointerType(recordDecl(isSameOrDerivedFrom(hasName("Animal")))))

LLVM-3.5
 

clang-query> match memberCallExpr()
clang-query> match memberCallExpr(callee(memberExpr(member(hasName("run")))))
clang-query> match memberCallExpr(callee(memberExpr(member(hasName("run")))), thisPointerType(recordDecl(isSameOrDerivedFrom(hasName("Animal")))))

效果

http://www.sczhlp.com/news/37113/

相关文章:

  • 网站建设与设计小升初最好的补课机构排行榜
  • ppt接单兼职网站搜索引擎竞价排名
  • 重庆国外网站推广网络推广方案怎么写
  • 如何做内网站的宣传栏打开百度首页
  • 哪些公司提供微信做网站服务注册公司网站
  • thinkphp企业网站seo优化人员
  • # JS获取用户访问网页的浏览器、IP、地址等信息 实现访问统计
  • mysql官网下载,新手必看的详细教程
  • MasterGo AI+Cursor辅助开发多模态全栈项目
  • 如何选择适合的HR薪酬软件?2025年9大推荐
  • springsecurity 开放了还是 403
  • 专门做定制化的网站沈阳seo关键词排名
  • 联系方式 响应式网站企业网络营销方法
  • 做食品那些网站游戏推广代理加盟
  • lvgl之lv_label_set_text_fmt格式化设置对象注意事项
  • GAS_Aura-Creating Gameplay Tags from Data Tables
  • 南宁网站制作公司网络营销运营方案
  • 山东今天重大新闻合肥网络公司seo建站
  • 网页注册qq关键词优化话术
  • 免费双语网站模板以服务营销出名的企业
  • 电商网站建设哪家好seo关键词推广方式
  • 珠海中企网站建设seo流程
  • 企业建站平台哪个好重庆网站外包
  • 如何做好一名销售seo排名优化推广教程
  • 网站建设装什么系统品牌软文营销案例
  • 杏林建设网站信息流广告案例
  • lwip在stm32上做网站软件外包公司排行
  • 钦州住房和城乡建设委员会网站徐州百度seo排名
  • 万盛网站制作今天最新新闻10条
  • 上海网站建设公司 红威关键词优化是怎么做的