Kao*_*Kao 17 c++ clang abstract-syntax-tree
我正在使用clang生成AST.我有以下文件(lambda.cpp)来解析:
#include <iostream>
void my_lambda()
{
auto lambda = [](auto x, auto y) {return x + y;};
std::cout << "fabricati diem";
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令解析它:
clang -Xclang -ast-dump -fsyntax-only lambda.cpp
Run Code Online (Sandbox Code Playgroud)
问题是clang解析了标题内容.结果,我有相当大的(~3000行)文件与无用(对我来说)的内容.
生成AST时如何排除标题?
Alp*_*per 16
clang-check可能对此事有用,clang-check选项-ast-dump-filter=<string>记录如下
-ast-dump-filter = <string> - 与-ast-dump或-ast-print一起使用以仅转储/打印具有限定名称中某个子字符串的AST声明节点.使用-ast-list列出所有可过滤的声明节点名称.
在示例代码(lambda.cpp)上clang-check运行时-ast-dump-filter=my_lambda
#include <iostream>
void my_lambda()
{
auto lambda = [](auto x, auto y) {return x + y;};
std::cout << "fabricati diem";
}
Run Code Online (Sandbox Code Playgroud)
它只转储匹配的声明节点 FunctionDecl my_lambda 'void (void)'
这是命令行参数和输出中的几行.
$ clang-check -extra-arg=-std=c++1y -ast-dump -ast-dump-filter=my_lambda lambda.cpp --
FunctionDecl 0x2ddf630 <lambda.cpp:3:1, line:7:1> line:3:6 my_lambda 'void (void)'
`-CompoundStmt 0x2de1558 <line:4:1, line:7:1>
|-DeclStmt 0x2de0960 <line:5:9, col:57>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5965 次 |
| 最近记录: |