预处理器之后的 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 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 如何从秘密字符串中制作 HMAC_SHA256 密钥以在 jose4j 中与 JWT 一起使用?

    我想生成 JWT 并使用 HMAC SHA256 对其进行签名 对于该任务我必须使用jose4j https bitbucket org b c jose4j wiki Home 我尝试根据秘密生成密钥 SecretKeySpec key
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 隐式超级构造函数 Person() 未定义。必须显式调用另一个构造函数?

    我正在开发一个项目 但收到错误 隐式超级构造函数 Person 未定义 必须显式调用另一个构造函数 我不太明白它 这是我的人物课程 public class Person public Person String name double D
  • Java 数组的最大维数

    出于好奇 在 Java 中数组可以有多少维 爪哇language不限制维数 但是JavaVM规范将维度数限制为 255 例如 以下代码将无法编译 class Main public static void main String args
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • Android AutoCompleteTextView 带芯片

    我不确定我是否使用了正确的词语来描述此 UI 功能 但我已附上我希望在我的应用程序中实现的目标的快照 它由 Go SMS 使用 用户在编辑文本中键入联系人 在用户从完成下拉列表中选择联系人后 该联系人将被插入到编辑文本中 如附图所示 编辑文
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • 在 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