如何在 Boost::wave 库中扩展 token_ids 以接受更多关键字

Posted

技术标签:

【中文标题】如何在 Boost::wave 库中扩展 token_ids 以接受更多关键字【英文标题】:How to extend token_ids to accept more keywords in Boost::wave library 【发布时间】:2019-10-25 13:17:35 【问题描述】:

我正在使用 Boost/wave 库处理语法高亮任务。我们通过取消引用 lex-token-iterator 来获取标记,然后我们处理这些标记以进行自定义突出显示。

开箱即用,wave 库带有一个 cpp 词法分析器,它迭代输入的 C++ 文件并标记关键字。但我现在的工作也涉及识别 CUDA 文件并使用相同的机制对它们进行标记。

我可以在 token_ids 文件 (The Token Identifiers) 中添加 CUDA 关键字,但有什么更简洁的方法可以做到这一点。

【问题讨论】:

【参考方案1】:

问题在于关键字是词法分析器的一部分,因此需要重新构建词法分析器。令牌 ID 是不够的。有关最近的示例,请参阅this PR。如果您愿意将 CUDA 关键字视为标识符,那可能是一种解决方案(假设 CUDA 代码没有作为注释或 pragma 的一部分嵌入到 C++ 中 - 我不熟悉它)。

【讨论】:

以上是关于如何在 Boost::wave 库中扩展 token_ids 以接受更多关键字的主要内容,如果未能解决你的问题,请参考以下文章

C++ boost wave,作用域宏

如何在像犰狳这样的库中扩展一个类?

如何将具有特定扩展名的文件添加到化石存储库中?

如何列出具有 .o 扩展名的静态库中的文件名

有没有办法将分页器控件附加到扩展库中的 dynamicViewPanel?

在应用程序扩展中找不到库中的 cocoapods