gpt4 book ai didi

java - 如何获取源代码中通用 ASTNode 的行号?

转载 作者:行者123 更新时间:2023-11-30 06:26:52 24 4
gpt4 key购买 nike

我如何在基本的情况下实现这个方法class ASTNode 以便我可以更轻松地获取不同的 ASTNode 行号?例如,如果我想获取 MethodDeclaration 位置,我需要编写代码

@Override
public boolean visit(MethodDeclaration node) {
int lineNum = ((CompilationUnit) node.getRoot()).getLineNumber(node.getStartPosition());
return super.visit(node);
}

但是,我想获取这样的位置信息

@Override
public boolean visit(MethodDeclaration node) {
int lineNum = node.getLineNumber();
return super.visit(node);
}

CompilationUnit 提供了一个名为 getLineNumber 的方法,使用 lineEndTable 实现,而一般 ASTNode 只有一个名为 的字段>startPosition,那么我是否可以在抽象类ASTNode中获取一个lineEntTable

最佳答案

“这可能吗……?”不,像 MethodDeclaration 这样的单个节点没有此信息。为了避免冗余,lineEndTable 仅存储在一个特定节点中,即 CompilationUnit。鉴于您已经找到了解决方案,寻找其他解决方案没有任何好处。 API 就足够了,您需要编写的额外代码也很少。

关于java - 如何获取源代码中通用 ASTNode 的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47008420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com