13 个版本 (7 个重大更改)
0.11.2 | 2023 年 10 月 22 日 |
---|---|
0.11.0 | 2017 年 9 月 20 日 |
0.10.0 | 2017 年 9 月 16 日 |
#2043 在 解析器实现
在 citrus 中使用
520KB
14K 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