diff --git a/Assignment-2/Assignment 2_ Parse Trees vs. AST-Based Frameworks.pdf b/Assignment-2/Assignment 2_ Parse Trees vs. AST-Based Frameworks.pdf new file mode 100644 index 0000000..fe90e7e Binary files /dev/null and b/Assignment-2/Assignment 2_ Parse Trees vs. AST-Based Frameworks.pdf differ diff --git a/Assignment-2/Java-8/ExprTool.java b/Assignment-2/Java-8/ExprTool.java index 3e97073..97d03bd 100644 --- a/Assignment-2/Java-8/ExprTool.java +++ b/Assignment-2/Java-8/ExprTool.java @@ -69,7 +69,7 @@ public class ExprTool { if(ctx.normalClassDeclaration() != null){ class_name = ctx.normalClassDeclaration().Identifier().getText(); }else if(ctx.enumDeclaration() != null){ - class_name = ctx.normalClassDeclaration().Identifier().getText(); + class_name = ctx.enumDeclaration().Identifier().getText(); } //String className = ctx.identifier().getText(); diff --git a/Assignment-2/README.md b/Assignment-2/README.md index 4154f0f..57b7ba4 100644 --- a/Assignment-2/README.md +++ b/Assignment-2/README.md @@ -11,7 +11,10 @@ ## JavaParser1.0.0 ```bash javac -cp .:javaparser-1.0.0.jar LCA_JP1_0_0.java - java -cp .:javaparser-1.0.0.jar test.java + java -cp .:javaparser-1.0.0.jar LCA_JP1_0_0 test.java ``` ## JavaParser3.27.0 +```bash + javax +``` \ No newline at end of file diff --git a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$1.class b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$1.class index d486d94..73cd9b4 100644 Binary files a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$1.class and b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$1.class differ diff --git a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$LocalClassVisitor.class b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$LocalClassVisitor.class new file mode 100644 index 0000000..aa7b5fc Binary files /dev/null and b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0$LocalClassVisitor.class differ diff --git a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.class b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.class index 7eaff14..dc4c730 100644 Binary files a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.class and b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.class differ diff --git a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.java b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.java index 89800cc..3d003f0 100644 --- a/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.java +++ b/Assignment-2/javaparser-1.0.0/LCA_JP1_0_0.java @@ -4,56 +4,38 @@ import japa.parser.ast.body.*; import japa.parser.ast.visitor.VoidVisitorAdapter; import java.io.FileInputStream; -import java.io.IOException; import java.io.File; public class LCA_JP1_0_0 { public static void main(String[] args) throws Exception { - // Checks if file is provided as command line argument if (args.length == 0) { System.out.println("Usage: java LCA_JP1_0_0 "); return; } - // Makes sure file exits and can be read - File sourFile = new File(args[0]); - if (!sourFile.exists() || !sourFile.isFile() || !sourFile.canRead()) { - System.err.println("Error: File can't be read or it doesn't exist: " + args[0]); - return; + FileInputStream in = new FileInputStream(new File(args[0])); + CompilationUnit cu = JavaParser.parse(in); + in.close(); + + LocalClassVisitor visitor = new LocalClassVisitor(); + visitor.visit(cu, null); + } + + static class LocalClassVisitor extends VoidVisitorAdapter { + private boolean insideMethod = false; + + @Override + public void visit(MethodDeclaration n, Void arg) { + insideMethod = true; + super.visit(n, arg); + insideMethod = false; } - - try (FileInputStream in = new FileInputStream(sourFile)) - // Parse the given Java file - { - CompilationUnit cu; - try { - cu = JavaParser.parse(in); - } catch (Exception e) { - System.err.println("Error: Failed to parse file"); - e.printStackTrace(); - return; - } - // Traverse the AST and print local classes - new VoidVisitorAdapter() { - - @Override - public void visit(MethodDeclaration n, Void arg) { - super.visit(n, arg); - } - - @Override - public void visit(ClassOrInterfaceDeclaration n, Void arg) { - System.out.println("Found class: " + n.getName()); - super.visit(n, arg); - } - }.visit(cu, null); - } catch (IOException e) { - System.err.println("Error: Unable to read the file."); - e.printStackTrace(); - } catch (Exception e) { - System.err.println("Uneaxpected error occured."); - e.printStackTrace(); + + @Override + public void visit(ClassOrInterfaceDeclaration n, Void arg) { + System.out.println("Local class: " + n.getName()); + super.visit(n, arg); } } -} +} \ No newline at end of file