java如何在源代码中获取通用ASTNode的行号?
如何在basic中实现此方法 类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
吗
# 1 楼答案
“有没有可能……”不,像
MethodDeclaration
这样的单个节点没有此信息。为了避免冗余lineEndTable
只存储在一个特定节点CompilationUnit
中。鉴于您已经找到了解决方案,寻找其他解决方案没有任何好处。API已经足够了,您需要编写的额外代码也非常少# 2 楼答案
我找到了一个折衷的方法。我为抽象类ASTNode添加了两个方法
我还为compileUnit添加了一个
setFileName
方法,这样我就可以为每个ASTNode获取fileName
和LineNum
信息有谁能给我一个更好的解决方案吗