clang-check -ast-dump -ast-dump-filter=<function_name> main.c
会生成特定代码的AST(仅包括函数声明)。
我们如何以JSON格式表示生成的AST呢?
PS:我只需要函数声明的AST。
clang-check -ast-dump -ast-dump-filter=<function_name> main.c
会生成特定代码的AST(仅包括函数声明)。
我们如何以JSON格式表示生成的AST呢?
PS:我只需要函数声明的AST。
使用-ast-dump=json
参数调用clang
。
这个功能是最近才实现的(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
命令现在是编译驱动程序,而不仅仅是编译器本身。
-ast-dump=json
在clang
中是支持的,但在clang-check
中不支持。而且这对于 C 程序是有效的,但对于 C++ 则不行。 - achalaclang.exe: warning: argument unused during compilation: '-ast-dump=json' [-Wunused-command-line-argument]
- kungfoomanclang -fsyntax-only -Xclang -ast-dump=json -Xclang -ast-dump-filter=some_function some_source.cc
。 - milahu