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

    ------------------------------------------------------------转载请注明出处--------------------------------------------------------------------------------------

  • 相关阅读:
    win11 千呼万唤 原生安卓体验及安装方法
    (转)pytorch和torch框架对比(区别 联系)
    AI深度学习部分框架了解
    有趣的USB接口和颜色分类
    后疫情时代读《浪潮之巅》第四版 读书笔记
    关于win11 VBS(基于虚拟化的安全性) 相关研究中
    Windows IPsec IP安全策略
    Element ui复杂表格(多级表头、尾行求合、单元格合并)前端导出excel
    es的常用字段类型和查询
    oom常见的解决方式
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3826314.html
Copyright © 2011-2022 走看看