Вы можете создать класс посетителя, например
public class RangeFinder extends VoidVisitorWithDefaults<Range> {
List<Node> nodesFound = new ArrayList<>();
public void defaultAction(Node n, Range givenRange) {
//Range of element in your code
Range rangeOfNode = n.getRange().get();
//If your given two lines contain this node, add it
if (givenRange.contains(rangeOfNode))
nodesFound.add(n);
//Else, if it overlaps with the node, check the children of the node
else if (givenRange.overlapsWith(rangeOfNode)) {
n.getChildNodes().forEach(child -> child.accept(this, givenRange));
}
}
}
, а затем использовать метод
public static String findSrc(CompilationUnit cu, int beginRow, int endRow) {
//Parse code for all nodes contained within two rows
RangeFinder rangeFinder = new RangeFinder();
cu.accept(rangeFinder, Range.range(beginRow, 0, endRow, 0));
//Build string
StringBuilder codeBuilder = new StringBuilder();
rangeFinder.nodesFound.forEach(node -> codeBuilder.append(node.toString()).append("\n"));
return codeBuilder.toString();
}