如何以 JSON 格式表示 clang AST?

ach*_*ala 9 json clang abstract-syntax-tree llvm-clang

clang-check -ast-dump -ast-dump-filter=<function_name> main.c给出特定代码的 AST(仅函数声明)。

我们如何以 JSON 格式表示生成的 AST?

PS:我只想要 AST 用于函数声明。

Jae*_*aen 9

调用clang参数-ast-dump=json

这是最近才实现的(2019 年 5 月),因此您需要最新版本的 Clang。

有关详细信息,请参阅https://reviews.llvm.org/D60910

还有一个库可以通过 libTooling 导出更多较低级别的信息,网址为https://github.com/facebook/facebook-clang-plugins

2022 年更新:现在有了完整的命令行clang -Xclang -ast-dump=json -fsyntax-only <file>,因为该clang命令现在是一个编译驱动程序,而不仅仅是编译器本身。