- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 CDT ASTParser 来解析 C/C++ 源文件的一些内容。示例:
//Docs for function min
int min(int a[], int n) {
//Comment here
}
int min1(){}
/*
Docs for function min2
*/
int min2(){}
通过使用 ASTVisitor,我可以解析代码中的函数定义列表,但我不知道如何“链接”定义代码上方的 IASTComment:
void handle(IASTTranslationUnit unit){
unit.accept(new ASTVisitor() {
{ shouldVisitDeclarations = true; }
@Override
public int visit(IASTDeclaration declaration) {
if (declaration instanceof IASTFunctionDefinition) {
IASTFunctionDefinition fnDefine =
(IASTFunctionDefinition) declaration;
IASTFunctionDeclarator fnDeclare = fnDefine.getDeclarator();
System.out.printf("Function: %s, type: %s, comment: %s\n",
fnDeclare.getName().getRawSignature(),
fnDefine.getDeclSpecifier().getRawSignature(),
"Somehow get the comment above function define???"
);
}
return PROCESS_SKIP;
}
@Override
public int visit(IASTComment comment) {
System.out.println("Comment: " + comment.getRawSignature());
return PROCESS_CONTINUE;
}
});
for (IASTComment cmt: unit.getComments())
System.out.println("Comment: " + cmt.getRawSignature());
}
ASTVisitor 类中的visit(IASTComment comment)
已弃用,IASTTranslationUnit.getComments()
方法只返回整个源文件中的注释列表,此处没有结构.
那么,如何获取链接到函数定义的 IASTComment 对象(如果有)?
最佳答案
您可以在 org.eclipse.cdt.internal.core.dom.rewrite.commenthandler
包中使用 ASTCommenter.getCommentedNodeMap(IASTTranslationUnit)
。该方法返回一个 NodeCommentMap
,它将注释映射到 AST 中的节点。可以将三种类型的评论分配给节点。在下面的示例中,方法声明是节点:
//this is a leading comment
void method() //this is a trailing comment
//this is a freestanding comment
{
...
NodeCommentMap.getOffsetIncludingComments(IASTNode)
返回节点的偏移量,包括其分配的前导注释。 NodeCommentMap.getEndOffsetIncludingComments(IASTNode)
返回节点的结束偏移量,包括其分配的尾随注释。分配的独立评论必须由您自己处理。您可以使用 NodeCommentMap.getFreestandingCommentsForNode(IASTNode)
获取独立注释。至少我在 cdt 包中找不到任何默认方法。
如果您想了解更多信息,建议阅读以下类中的文档:
org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.ASTCommenter
org.eclipse.cdt.core.parser.tests.rewrite.commenthandler.CommentHandlingTest
org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommenter
注意:大多数包/类都是内部的。
关于java - 如何在 CDT ASTParser 中将 IASTComment 链接到 IASTDeclaration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31583886/
我已经用 eclipse-cdt 很好地设置了一个项目。我不是从 eclipse 构建的,但是索引器可以工作,并且我的所有 makefile 设置都被选中,包括第三方库头文件。 然而,我想要的是能够查
我正在使用 Eclipse IDE for C/C++ Developers (Eclipse Ganymede Package - version 3.4.2)在 Windows XP 上使用 Mi
在 eclipse CDT 4.2 中,我只想包含几个文件夹作为资源。例如“/root”是创建项目“myproject”的地方。我只想包含这些文件夹并排除任何其他文件夹。 /根/A /根目录/B /根
我已经下载了最新的 Eclipse CDT 版本 (Helios),并想尝试一些 C++ 编程(很久没有这样做了)。 我试图做“Hello World”项目,但我很快就卡住了。 第一件事 - #inc
我已经离开 Eclipse CDT 一段时间了,并且被 JetBrains 优秀的 IDE 宠坏了(公司不让我拥有 Clion )。诚然,这些主要用于解释型语言,而不是编译型语言,因此评估更简单。 当
有没有办法让 Eclipse CDT 在每次构建项目时自动增加构建版本号?我可以找到 ANT 的解决方案,但我知道这仅适用于 Java 项目。 最佳答案 不,ANT 不仅适用于 Java 项目。它主要
我在 C++ Makefile 项目中使用 Eclipse CDT(Helios 版本,CDT 7.0)。由于我是 Eclipse 的新手,我想知道如何正确管理包含目录。我#include 通常没有任
我有一个包含多个项目的工作区,所有项目都可以正常编译。然而,由于未解析的包含,一些项目在编辑器中给出了很多关于未解析符号的警告。大多数是来自工作区中其他项目或第三方库的头文件。 谷歌搜索表明这是索引器
我想将我的 CDT 项目提交给 SVN。我是关于 CDT 的新手,我想知道描述该项目的文件。 相关文件似乎是: 。项目 .settings(目录) .c项目 .csettings(目录) .proje
有没有办法在eclipse CDT中为类生成模板自定义包含保护的格式?当前格式为 _H ,但我想要的是类似 ___H .并不是说我希望在我自己的项目中的不同命名空间中有同名的类,但我不想在出现这种情况
每当我从构建中排除 .h 文件并稍后重新包含它时,项目资源管理器中的 .h 文件的图标都会有一个图钉装饰。我查看了 CDT 用户指南,但它不在他们的 list of icons 上。图钉是什么意思?
使用 Eclipse CDT 7.0,在进行 headless 构建时,是否可以指定在命令行上仅构建单个构建配置? 最佳答案 我想我找到了自己问题的答案,主要是通过玩 CDT 8.0 和 indigo
有没有办法在 Eclipse 2020-03 (CDT 9.11) 中启用对 C++20 功能的支持?我的意思是摆脱不正确的语法高亮显示,例如忽略新添加的关键字,如“概念”、“要求”和 C++20 标
我在 Linux 上使用 Eclipse (galileo) 和当前版本的 CDT。而且我不能设置断点!它运行起来很有趣,调试得很好,并在 main 中停止……但是像我多年前用 CDT 那样双击左边距
我最近(实际上是今天)开始使用 Eclipse CDT for windows。创建了一个项目,将一个测试 C 文件(Hello World)添加到项目中。构建项目,出现如下错误。 Error: Pr
我有一个 chroot 环境,其中包含使用 make 构建复杂 C++ 项目所需的一切(适用于特定的 Linux 发行版)。 我想在这个项目中使用 Eclipse CDT(在 chroot 环境之外)
eclipse cdt 如何使用 TM/RSE 管理和构建远程文件??是否有使用 Windows 中的 Eclipse CDT 和 Linux 中的源代码和编译器的项目用法示例? 腾讯 最佳答案 Ta
我正在测试 Eclipse 的 CDT 包。我正在尝试用 C 编译和运行一个简单的 Hello World 程序。 #include int main(void { printf("
大家好, 我已经使用 GCC 安装了 Eclipse CDT 和 MinGW。 将 mingw\bin 添加到我的路径环境变量中。 尝试使用 HelloWorld 向导创建新的 C++ 项目时,出现构
我正在开发 CDT eclipse 插件,我正在尝试使用以下代码使用 CDT 代码获取 eclipse 项目资源管理器中存在的源文件列表,结果为空。 案例1: IFile[] files2 = Res
我是一名优秀的程序员,十分优秀!