1
컴파일러 트리 API를 사용하여 내 코드를 AST로 구문 분석하지만 visitCompilationUnit 메소드는 호출되지 않습니다. visitClass 메소드가 호출되었는데, 무엇을 잘못하고 있습니까?컴파일 유닛 방문자 - Java 컴파일러 트리 ap
두 번째 질문 : 컴파일 된 코드를 자르려면 어떤 방법이 있습니까 (클래스 파일이 아닌 AST에서만 interrest 됨).
감사합니다.
@SupportedSourceVersion(value=SourceVersion.RELEASE_7)
@SupportedAnnotationTypes("*")
public class Parser extends AbstractProcessor {
.
.
.
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnvironment) {
for (Element e : roundEnvironment.getRootElements()) {
System.out.println(e + "***");
TreePath tp = trees.getPath(e);
// invoke the scanner
rootVisitor.scan(tp, trees);
}
return true;
}
}
public class OdpaVisitor extends TreePathScanner<Object, Trees> {
protected RepositoryIface repository;
private String pckg;
public OdpaVisitor(RepositoryIface repository) {
this.repository = repository;
}
@Override
public Object visitCompilationUnit(CompilationUnitTree node, Trees p) {
repository.savePackage(node.getPackageName().toString());
this.pckg = node.getPackageName().toString();
return super.visitCompilationUnit(node, p);
}
@Override
public Object visitClass(ClassTree node, Trees p) {
repository.saveClass(node.getSimpleName().toString(), pckg);
return super.visitClass(node, p);
}
}
thx, 작품 :-) – malejpavouk