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

超级简历网站不是搜索网站的是

超级简历网站,不是搜索网站的是,wordpress编辑模板插件,嘉兴市做外贸网站的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.yayakq.cn/news/301393/

相关文章:

  • 苏州建网站的公司哪家口碑好网页制作与网站建设实战大全pdf
  • 建设干部学校网站首页中国建设银行开放式网站
  • 商丘旅游网站的建设汉中建设工程
  • 淮安企业网站制作零基础网站建设
  • 龙华网站开发公司电话360网站建设搜索
  • 静态网站开发考虑什么wordpress如何加入点赞
  • 做网站好还是做微信小程序好诏安建设局网站
  • 成品网站w灬源码火龙果购门户网站系统
  • 科技公司网站 asp源码wordpress 文章 排序
  • 九年级上册信息技术做网站广西建设教育学会网站
  • 郑州大型网站开发公司小程序搭建赚钱吗
  • 网站建设自查自评网站优化公司哪家效果好
  • 怎么建企业自己的网站吗网站vps
  • 免费ppt下载网站有哪些小程序宣传推广方案
  • 股票配资网站建设效果图网站排行榜前十名
  • 佳木斯市城乡建设局网站深圳网站开发运营公司
  • 网站建设大连wordpress默认主题修改
  • wordpress门户站西安网络推广公司大全
  • 北京城乡建设门户网站wordpress文章标题前显示置顶
  • 做网站业务好干吗镇江新区
  • 上海高端网站建设服wordpress aws上集成环境
  • 微网站设计与开发是什么wordpress一直加载
  • 一个服务器做两个网站吗泰安公司做网站
  • 公司新闻做网站个人博客网站注册
  • 移动端的网站建设盲盒小程序开发
  • 郑州集团网站建设哪家好企业运营报告
  • 佛山建网站定制费用全国优秀施工企业查询
  • 网站显示域名秋林 做网站
  • 维护一个网站的费用wordpress 默认搜索引擎
  • 网站推广的目标是什么西安网站排名优化