用于解析和处理 C++ AST 的库
C++ AST 库接口 - 解析源文件、合成实体、获取文档注释并生成代码。
如果您正在编写一个需要访问 C++ AST 的工具(例如文档生成器、反射库等),除了编写自己的解析器之外,您的唯一选择是使用 clang。 它提供了 三种工具接口,但真正适用于独立应用程序的唯一一个是 libclang。 但是, libclang 具有各种限制,并且不暴露整个 AST。
因此没有可行的选项 - 除了这个库。它最初是 standardese 文档生成器 的一部分,但已被提取为一个独立的库。有关动机和设计的更多信息,请参阅 此博客文章。
将 (几乎) 所有 C++ 实体暴露出来: 支持从函数到类、模板到友元声明、宏到枚举等各种内容; * 将 C++ 类型的完整信息暴露出来; * 支持和暴露各种格式的文档注释,并通过智能实体匹配进行处理; * 支持 C++11 属性(包括用户定义的属性); * AST 层次结构完全脱离了解析器: 这允许合成 AST 实体和多个解析后端; * 解析器基于 libclang: 虽然 libclang 存在限制和/或 bug,但实现的解析器使用各种工作绕过/修补,以提供一个仅在罕见的边缘情况中出错的解析器。请参见 带有 libclang-parser 标签的问题列表; * 简单但可自定义的代码生成接口。
支持修改解析的实体: 目前所有实体都是不可变的,需要找到一个合适的实现方式; * 全面支持表达式: 目前只暴露了字面表达式; * 支持语句: 目前函数体根本没有被解析; * 支持成员特殊化: 目前只支持基本类型的成员特殊化;
暂无开放 Issues,或尚未同步最近议题。