#ast #clang #libclang #语法树 #树节点 #静态分析 #ctree

bin+lib c3

完整的 C AST。允许分析并生成由 C 衍生的代码。使用 LLVM 4/Clang 构建并使用一些脆弱的 C++ API 来解决 libclang 中缺失数据和模糊性。

13 个版本 (7 个重大更改)

0.11.2 2023 年 10 月 22 日
0.11.0 2017 年 9 月 20 日
0.10.0 2017 年 9 月 16 日

#2043解析器实现


citrus 中使用

NCSA AND BSD-3-Clause

520KB
14K SLoC

Bitbake 9K SLoC // 0.0% comments Rust 3.5K SLoC // 0.0% comments C++ 1K SLoC // 0.1% comments C 297 SLoC

C3: C 节点的树

这个软件包解析 C 文件并将它们作为抽象语法树公开。

AST 是 C 的常规结构的宽松版本(例如,一切都被假定为表达式),但包含足够的信息来重建完整的源代码。AST 还允许 Rust 中未在 C 文件中找到的一些功能。这使得 Citrus 能够将 C 转换为 Rust。

它使用 LLVM 和 Clang 的不稳定 C++ API。目前,它支持 LLVM 4 或 5,并需要与 libclang 静态链接。

稳定的 Clang API 不公开真正的 AST,而是一个平坦的、不完整和模糊的视图。这个软件包绕过这些不良部分,从 Clang 中提取更完整的 C 文件视图。

在 Rust 一侧基于 bindgen

构建

按照以下说明操作.

依赖项

~215–445KB