如何在 clang 中从 AST 中排除标头?

2023-12-22

我正在使用 clang 生成 AST。我有以下文件(lambda.cpp)要解析:

#include <iostream>

void my_lambda()
{
    auto lambda = [](auto x, auto y) {return x + y;};
    std::cout << "fabricati diem"; 
}

我正在使用以下命令解析它:

clang -Xclang -ast-dump -fsyntax-only lambda.cpp

问题是 clang 也解析标题内容。结果,我得到了相当大(约 3000 行)的文件,其中包含(对我来说)无用的内容。

生成 AST 时如何排除标头?


clang-check可能对这个问题有用,clang-check有选择-ast-dump-filter=<string>记录如下

-ast-dump-filter= - 与 -ast-dump 或 -ast-print 一起使用,仅转储/打印具有特定子字符串的 AST 声明节点 合格名称。使用 -ast-list 列出所有可过滤的声明节点 名称。

when clang-check运行与-ast-dump-filter=my_lambda关于示例代码(lambda.cpp)

#include <iostream>

void my_lambda()
{
    auto lambda = [](auto x, auto y) {return x + y;};
    std::cout << "fabricati diem"; 
}

它仅转储匹配的声明节点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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 clang 中从 AST 中排除标头? 的相关文章

随机推荐

  • Facelet 标签库机制未按预期工作

    我无法将 taglibrary 打包到 war 文件中 我将标签从项目移动到当前项目现在依赖的额外库 我将标签库文件放入META INF包含标签的 jar 的目录 如何描述here https stackoverflow com quest
  • 使用图像代替单选按钮

    如果我有一个带有按钮的单选组 我怎样才能在选择选项中只显示图像而不是按钮 例如 Wrap radio and image in
  • 如何测试列表中的每个项目是否都是“int”类型?

    假设我有一个数字列表 我该如何检查列表中的每个项目都是 int 我四处搜寻 但没有找到任何与此相关的信息 for i in myList result isinstance i int if result False break 可以 但在
  • Nagios 在 CLI 上处于活动状态,但不在 Web 界面上运行

    早上好 我的 Nagios 配置有问题 这是服务 nagios status 的响应 root SRV SUPERVISION BT service nagios status nagios service LSB Starts and s
  • 如何使用 Cocoa 创建临时文件?

    几年前 当我使用 C 时 我可以轻松创建一个临时文件并使用此函数获取其名称 Path GetTempFileName 此函数将在临时目录中创建一个具有唯一名称的文件 并返回该文件的完整路径 在 Cocoa API 中 我能找到的最接近的是
  • 为什么 WebSocket4Net 关闭连接并显示 1011 错误代码

    我有一个Python 3 网络套接字 https websockets readthedocs io en stable 服务器 与nodejs客户端配合良好wscat gt wscat n c ws 192 168 154 200 111
  • std::vector 在读取期间调整大小与保留

    这是我的工作代码 size t FileReader Read ByteVector output output resize m elementSize m blockSize size t read fread output 0 m e
  • 根据字段值反序列化为密封子类

    我有一个字段 我想根据该 Json 对象上的值将其反序列化为密封子类的实例 id 1L some array my thing type sealed subclass one other thing thing thing is a st
  • Page.ClientScript.RegisterStartupScript 不起作用 - 为什么?

    我在 NGOnInit 处理程序中有一些代码 if Page ClientScript IsStartupScriptRegistered GetType MyScript Page ClientScript RegisterStartup
  • Visual Studio“重建全部失败”

    为什么重建失败但没有错误 从今天早上开始 这个错误不断出现 我构建了整个解决方案 25 个 C 托管项目 并出现 重建全部失败 但没有任何错误 我有 13 个关于 COM 不支持泛型的警告 但这是 正常 的 因为有一个 dll 被公开为 C
  • Google Partners API 需要权限吗?

    我正在尝试使用 python 从 Google Partners API 获取公司列表 我应该能够使用这些方法 https developers google com resources api libraries documentatio
  • Rails4 动态选择下拉菜单

    我正在尝试使用 form tag 在搜索表单中设置一些动态下拉选择菜单 我想要的是与示例类似的功能铁路广播 88 http railscasts com episodes 88 dynamic select menus revised Mo
  • 如何高效存储数百万条统计记录?

    我们的 eshop 中有大约 170 万个产品 我们想要记录该产品在 1 年的时间内有多少浏览量 我们想要每至少 2 小时记录一次浏览量 问题是该任务使用什么结构 现在 我们尝试在具有 2 列的记录中保留 30 天的统计数据classifi
  • 类型上不存在属性

    我正在使用 Ionic2 和 Angular2 开发一个项目 当尝试跑步时ionic serve 数据被检索 没有任何错误 但是 当尝试在 ios 上测试并运行时ionic build ios 我收到以下编译时错误 该属性不存在 还有其他人
  • 将 animateColor 应用于多个 SVG 元素

    有没有办法同时为多个元素定义颜色动画 我尝试添加animateColor to a g元素 但这不起作用 我可以使用 Javascript 添加animateColor单独对每个元素进行处理 但我更喜欢在静态 SVG 数据中完成所有操作 请
  • 使用 java 从图像中提取文本

    是否可以在不使用任何第三方 API 的情况下从图像中读取文本 是的 你绝对可以自己写光学字符识别 http en wikipedia org wiki Optical character recognition OCR 软件 它的稳健性完全
  • Lambda 的行为与匿名内部类不同

    在做一些基本的 lambda 练习时 一个明显相同的匿名内部类的输出给了我与 lambda 不同的输出 interface Supplier
  • 与 RegEx 相比,使用 VB.NET Like 运算符有什么优势吗?

    除了可能增强非常简单模式的可读性之外 为什么有人会选择在 VB NET 中使用 Like 运算符而不是正则表达式来进行字符串模式匹配 有什么优点吗 大概 如果您想了解 Like 是如何实现的 大部分 全部 都在Microsoft Visua
  • Java泛型,通配符的嵌套集合

    编译 1 6 List
  • 如何在 clang 中从 AST 中排除标头?

    我正在使用 clang 生成 AST 我有以下文件 lambda cpp 要解析 include