深入研究Clang(三) libclang

深入研究Clang(三) libclang

作者:史宁宁

如今的Clang,不不过一个编译器前端,同一时候也能够作为一个库使用。作为一个库使用的时候,能够用它去分析C/C++/ObjectC语言代码,能够分析源代码得到AST,也能够获取已经分析好的AST,也能够遍历AST,还能够获取AST中基本元素的物理源代码位置。这就是libclang。

libclang提供了一系列的C语言的接口,可是这些接口并不能全然提供存储在Clang C++ AST中的全部信息,仅仅能提供部分基本信息,可是这些基本信息已经能够满足普通情况下的使用。主要目的是为了稳定,而且能够支持开发工具的基本功能。(clang/include/clang-c/Index.h中的凝视原文例如以下: This C interface to Clang will never provide all of the information representation stored in Clang’s C++ AST, nor should it: the intent is to maintain an API that is relatively stable from one release to the next, providing only the basic functionality needed to support development tools.)

与此同一时候,libclang支持和python绑定使用,也就是说你能够是用python去调用libclang。clang在clang/bindings/python/这个文件夹以下提供了绑定所须要的文件。眼下这个文件夹以下除了README之外还有三个文件夹:clang,examples,tests。当中clang文件夹以下的文件是绑定所须要的,examples文件夹以下是绑定后測试用的两个小样例。test文件夹以下应该是測试须要的一些文件(该文件夹以下文件眼下还没有认真分析)。仅仅须要把绑定文件放到python的库文件以下(包括clang文件夹),然后确保系统安装clang到系统文件夹,之后就能够执行样例了。

libclang带来的长处非常明显,能够在非常多不同的环境以下轻松的用上libclang,仅仅是作为一个提供了parser功能的库,非常方便快捷的嵌入自己的工具中,避免了大量的反复工作。同一时候也不用去分析clang内部的代码,不须要熟悉内部大量的AST相关的代码,就能够使用,这能够节省大量的时间。当然,想深挖clang的代码的同学,也能够把这里当作一个突破口。

————————————————————转载请注明出处————————————————————————————–

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119124.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 软件测试工作基本流程[通俗易懂]

    软件测试工作基本流程[通俗易懂]最近在为面试新工作做准备,所以想想整理一下软件测试的基本工作流程,大致梳理一遍,这样也便于自己在面试过程中可以沉着的面对面试官的测试工作如何进行的问题。首先,作为测试人员需要学习并了解业务,分析需求点为什么测试人员要参加需求分析?也就是进行测试需求分析的目的是什么?第一、把用户需求转化为功能需求:1)对测试范围进度量2)对处理分支进行度量3)对需…

  • 基于gitlab的CICD流程规范

    基于gitlab的CICD流程规范前言:这篇文章主要讲一讲基于gitlab的CICD流程规范基于gitlab的CICD流程规范一、简介二、CICD流程图三、CICD说明四、结合CICD流程拓展1、业务代码-数据库基于flyway实现版本控制2、数据库版本控制3、二进制或内置五、代码质量检查及自动化测试(未来)六、疑问解答与加群交流学习一、简介为了提升线下测试效率,缩短测试时间,提升提测代码质量,规范流程,缩短测试准备和执行时间,缩短问题定位时间,提供预测性指标,规范CICD流程,以提升整体团队效率。二、CICD流程图三、CICD

  • 网络地址转换(NAT)的原理与配置

    网络地址转换(NAT)的原理与配置

  • pycharm设置打不开怎么回事_pycharm界面设置

    pycharm设置打不开怎么回事_pycharm界面设置害,pycharm专业版到期了,不能再用了,下了一个社区版,想要编译程序的时候发现没有解释器。解决方法找到设置(右上角,小齿轮)找到项目的Pythoninterpreter设置,点击小齿轮添加新的解释器。选择添加新的interpreter选择对应版本的Python即可。点确定就设置好了。…

  • Java中标识符的命名规则

    Java中标识符的命名规则培养好的编程习惯是十分重要的。本文带你简单认识一下Java中标识符的命名规则和规范。

  • Redis 数据结构之字符串的那些骚操作 — 像读小说一样读源码

    Redis 数据结构之字符串的那些骚操作 — 像读小说一样读源码

    2020年11月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号