预处理器之后的 CDT IASTNode getRawSignature

2024-01-12

在CDT核心插件中,有一个方法getRawSignature接口的IASTNode被描述为:

Returns the raw signature of the IASTNode before it is processed by the preprocessor.
Example:
#define ONE 1
int x=ONE; // getRawSignature() for this declaration would return "int x=ONE;"

但我想获得字符串签名after该节点由预处理器处理
在上面的示例中,预期的字符串是:int x=1
如何得到这个字符串呢?我也看过其他一些方法,但没有人能做到。


好问题!

首先要注意的是,在 CDT 处理过程中任何时候代码都不以预处理字符串的形式存在。

处理流程是这样的:

   Unpreprocessed string
-> [Lexer]
-> Unpreprocessed token stream
-> [Preprocessor]
-> Preprocessed token stream
-> [Parser]
-> Abstract syntax tree

请注意,在预处理形式中,代码仅作为令牌流存在,而不是作为字符串存在。

也就是说,如果您有预处理的令牌流,您可能可以使用它来构造预处理的字符串。

不幸的是,我不知道获取预处理令牌的简单方法,并且这个邮件列表主题 https://dev.eclipse.org/mhonarc/lists/cdt-dev/msg30188.html表明可能没有一个。

我认为我们能做到的最接近的是重新预处理文件,从而获得整个文件的预处理令牌流。这可以通过调用来完成AbstractCLikeLanguage.createScanner()以获得IScanner(这是一个受保护的方法,所以你需要从GCCLanguage or GPPLanguage访问它),并调用IScanner.nextToken()反复获取预处理后的token。

这仍然不能完全满足您的需求,因为您需要与特定 AST 节点相对应的预处理令牌。我believe您可以通过比较预处理标记的偏移量和长度(使用以下方法获得)来计算此值IToken.getOffset() and IToken.getLength())到 AST 节点的偏移量和长度(使用以下方法获得)ASTNode.getOffset() and ASTNode.getLength()),我相信它们在相同的编号空间中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

预处理器之后的 CDT IASTNode getRawSignature 的相关文章

  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • Eclipse 在源代码管理中保存操作

    我们希望找到一种在签入之前执行代码标准的 轻量级 方法 我们真的很喜欢使用 Eclipse 内置的想法保存操作 go to Preferences gt gt Java gt gt Editor gt gt Save Actions 其中有
  • 如何使用 Java 中的 Web 服务(例如 Axis2)发送复杂对象的数组或集合?

    我对 SOAP Web 服务还比较陌生 虽然我完成了一些较小的 Web 服务项目 但我偶然从来不需要返回 或用作参数 复杂 对象的数组或集合 当我尝试这样做时 根据我的 SOAP 绑定风格 我会得到不同的奇怪行为 当我使用RPC 文字 我可
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • SAML 服务提供商 Spring Security

    当使用预先配置的服务提供者元数据时 在 Spring Security 中 是否应该有 2 个用于扩展元数据委托的 bean 定义 一份用于 IDP 元数据 一份用于 SP 元数据
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • JavaFX 中具有自定义内容的 ListView

    How i can make custom ListView with JavaFx for my app I need HBox with image and 2 Labels for each line listView 您可以通过查看
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • 在 dplyr summarise 中使用变量列名

    我发现这个问题已经被问过 但没有正确的答案 R在dplyr的summary函数中使用变量列名 https stackoverflow com questions 31979189 r using variable column names
  • 如何使用 JMock 在 java 中模拟静态变量

    我有一个单元测试问题 其中一个类有一个静态变量想要加载 Spring 应用程序 Ctx 这个类不是来自 Bean Factory 我无法改变这个事实 static ApplicationContext applicationContext
  • 多个 AVAudioRecorder 实例

    我正在开发一个记录声音的应用程序 此外 我希望用户能够用自己的声音评论某些情况 我认为配置一个音频会话并创建两个具有不同文件 URL 的 AVAudioRecorder 实例就足够了 但这不起作用 第二个录音机确实创建了其音频文件 但它不记
  • AAA在8086指令集中如何工作?

    有一些关于指令如何工作的算法的信息 if low nibble of AL gt 9 or AF 1 then AL AL 6 AH AH 1 AF 1 CF 1 else AF 0 CF 0 in both cases clear the
  • 如何将 npm(node.js 包管理器)添加到 PATH 中?

    我像这样安装了node js cd usr local bin git clone depth 1 http github com joyent node git cd node git checkout origin v0 4 optio
  • 使用 html Mailto 向多个收件人发送电子邮件:不起作用

    我们有 400 到 500 百封电子邮件 当我们连接它们并将它们放入 mailto 时 它不起作用 浏览器会自动在电子邮件之间添加 并且单击链接不起作用 a href open emails a 是否有最大长度mailto 属性 还有其他方
  • 在 Windows 上编译 MatConvNet

    我正在尝试编译矩阵卷积网络 http www vlfeat org matconvnet 在 Windows 8 1 上 因为我似乎需要使用 Makefile 来做到这一点 所以我下载了GNUWin 制作 http gnuwin32 sou
  • 在 AVX 中寻找绝对

    在其中一个解决方案中 他 她发现abs inp 对于 AVX 向量 m256 符号位 mm256 set1 ps 0 0f m256 inp abs mm256 andnot ps sign bit inp 其背后的逻辑是什么 SSE AV
  • PayPal API - 验证帐户是否有效/存在/已验证

    有人能够仅通过电子邮件地址验证 PayPal 帐户的有效性吗 AdaptiveAccounts GetVerifiedStatus 用 PayPal 自己的话说 仅供其关键战略客户使用 见下文 我找不到任何其他方法来根据电子邮件地址检查帐户
  • asp.net表单身份验证多人使用同一用户名登录

    我有一个使用表单身份验证的 MVC3 网站 我想知道如果多个或更多人使用同一用户帐户登录是否会出现任何问题 我一直在尝试解决我们遇到的错误 看起来网站服务器在与数据库服务器通信时出现问题 但是我只是想排除帐户共享引起问题的可能性 Thank
  • F# 命名空间或模块“XXXX”未定义

    我正在尝试创建一个基本的 ASP net f 应用程序 当我尝试引用 Youtube net API 时 我在代码隐藏文件中收到 命名空间或模块 Google 未定义 我在 Visual Studio 中使用了默认的 ASP Web 表单模
  • 选择一个 xml 元素,忽略元素名称,打印换行符

    我想选择第一个元素 但在输出中忽略它的名称 这就是我在请求第一个之后得到的url每个输入 xml 文件中的元素 xmllint xpath yandexsearch response results grouping group doc u
  • 自定义进度绘制不适用于 Android Lollipop (API 21) 设备

    我有一个进度绘图 它在运行 Android Lollipop 的设备上无法正常工作 Screenshot on M Screenshot on Lollipop Circle percentage drawable xml
  • 从 OrderedDict 中提取数据

    所以我有一个 firebase 数据库 这是我获取特定数据的代码 db firebase database test db child Users order by child IDNumber equal to 222333123 get
  • ng build 和 ngserve 有什么区别?

    ng build 和 ngserve 有什么区别 ng build 和 ngserve 之后到底发生了什么或发生了什么变化 The ng build命令专门用于构建应用程序和部署构建工件 The ng serve命令旨在实现快速 本地和迭代
  • DataGridView使用虚拟模式实时显示数据表

    我有一个 DataGridView 它将显示数据库中的记录 日志条目 一次可以存在的记录量非常大 我想使用 DataGridView 的虚拟模式功能来显示数据页 并最大限度地减少给定时间必须通过网络传输的数据量 轮询数据是不可能的 一次将有
  • 使用 zxing 创建彩色二维码

    我正在使用谷歌开源java zxing Creator http code google com p zxing http code google com p zxing 创建二维码 我已准备就绪并正在工作 我正在使用 Coldfusion
  • 在类内初始化固定大小的常量数组

    考虑下面的类 class A const int arr 2 public A 是否可以初始化arr从构造函数初始值设定项列表或以除声明它的行之外的任何其他方式 即const int arr 2 1 2 请注意 我对与 C 98 一起使用的
  • 错误 400 删除记录的请求 YII 无效

    我试图在 Yii 中删除一条记录 这会抛出错误 400 请不要再次重复此请求 它正在检查后变量 我的控制器文件有 if Yii app gt request gt isPostRequest 当我回显我的 post 变量时 它是空白的 而
  • 预处理器之后的 CDT IASTNode getRawSignature

    在CDT核心插件中 有一个方法getRawSignature接口的IASTNode被描述为 Returns the raw signature of the IASTNode before it is processed by the pr