深入研究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的代码的同学,也能够把这里当作一个突破口。

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nginx启动、重启、关闭

    方式一:传统方法一、启动  cdusr/local/nginx/sbin./nginx二、重启  更改配置重启nginx  kill-HUP主进程号或进程号文件路径或者使用cd/usr/local/nginx/sbin./nginx-sreload  判断配置文件是否正确 nginx-t-c/usr/local/nginx/conf/nginx.conf或者cd…

    2022年4月4日
    45
  • PS磨皮插件一键调色滤镜雅点修图宝典PS工笔画插件素材磨皮滤镜

    PS磨皮插件一键调色滤镜雅点修图宝典PS工笔画插件素材磨皮滤镜工笔画

    2022年7月22日
    13
  • 第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.8

    第五章 模拟跳转充值界面以及requestCode和resultCode的解释 2.81.requestCode和resultCoderequestCode:由跳转前的界面定义,通过startActivityForResult()来将定义的intent(同时也代表着要跳转的界面)与

    2022年7月3日
    26
  • sql语句面试经典50题_sql基础知识面试题

    sql语句面试经典50题_sql基础知识面试题目录​SQL基础知识整理:常见的SQL面试题:经典50题三、50道面试题2.汇总统计分组分析3.复杂查询sql面试题:topN问题4.多表查询【面试题类型总结】这类题目属于行列如何互换,解题思路如下:其他面试题:SQL基础知识整理:select查询结果如:[学号,平均成绩:组函数avg(成绩)]from从哪张表中查找数…

    2022年4月20日
    49
  • python表白代码简单「建议收藏」

    python表白代码简单「建议收藏」谢谢大家的支持,您的一键三连是罡罡同学前进的最大动力!一键三连一键三连一键三连一键三连一键三连一键三连python表白代码简单1.首先你要现有python,以及环境配置(自己去网上找资源)2.下载pycharm(相当于Dev、Eclipse编译器)3.复制粘贴即可下面放上源代码:importturtle#str=input(‘请输入表白语:’)str=”糖浆不分离”str1=”2020/12/22~2021/2/16″turtle.speed(

    2022年6月2日
    48
  • OPKG 软件包管理

    OPKG 软件包管理Opkg是一个轻量快速的套件管理系统,目前已成为Opensource界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。中文名opkg属    性套件管理系统更    新可以获取的软件包列表常用于路由、交换机等嵌入式设备常用命令opkgupdate更新可以获取的软件包列表

    2022年6月14日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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