j3.27.0.0 working
This commit is contained in:
54
Assignment-2/javaparser-1.0.0/LCA_JP3_27_0.java
Normal file
54
Assignment-2/javaparser-1.0.0/LCA_JP3_27_0.java
Normal file
@@ -0,0 +1,54 @@
|
||||
import com.github.javaparser.JavaParser;
|
||||
import com.github.javaparser.ParserConfiguration;
|
||||
import com.github.javaparser.ast.CompilationUnit;
|
||||
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
|
||||
import com.github.javaparser.ast.body.MethodDeclaration;
|
||||
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
|
||||
import static com.github.javaparser.ParserConfiguration.LanguageLevel.JAVA_8;
|
||||
|
||||
public class LCA_JP3_27_0 {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length == 0) {
|
||||
System.out.println("Usage: java LCA_JP3_27_0 <JavaSourceFile>");
|
||||
return;
|
||||
}
|
||||
|
||||
// Configure parser for Java 8
|
||||
ParserConfiguration config = new ParserConfiguration();
|
||||
config.setLanguageLevel(JAVA_8);
|
||||
JavaParser parser = new JavaParser(config);
|
||||
|
||||
// Parse the file
|
||||
FileInputStream in = new FileInputStream(new File(args[0]));
|
||||
CompilationUnit cu = parser.parse(in).getResult().get();
|
||||
in.close();
|
||||
|
||||
// Visit and find local classes
|
||||
LocalClassVisitor visitor = new LocalClassVisitor();
|
||||
visitor.visit(cu, null);
|
||||
}
|
||||
|
||||
static class LocalClassVisitor extends VoidVisitorAdapter<Void> {
|
||||
private boolean insideMethod = false;
|
||||
|
||||
@Override
|
||||
public void visit(MethodDeclaration n, Void arg) {
|
||||
insideMethod = true;
|
||||
super.visit(n, arg);
|
||||
insideMethod = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(ClassOrInterfaceDeclaration n, Void arg) {
|
||||
if (insideMethod) {
|
||||
System.out.println("Local class: " + n.getNameAsString());
|
||||
}
|
||||
super.visit(n, arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user