From 3c6ffcf4d8b8894de6d85da9a7c2094570d5a08a Mon Sep 17 00:00:00 2001 From: Jakob Herrmann Date: Tue, 10 Jan 2017 22:20:44 +0100 Subject: [PATCH] * "Normal" class and interface names can now be resolved. * TODO: line comments --- src/de/dhbwstuttgart/parser/RunParser.java | 1 + .../parser/SyntaxTreeGenerator.java | 24 +++++++++++++++---- src/de/dhbwstuttgart/parser/TODO | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/de/dhbwstuttgart/parser/RunParser.java b/src/de/dhbwstuttgart/parser/RunParser.java index 48ba0fd4..c1d2af50 100644 --- a/src/de/dhbwstuttgart/parser/RunParser.java +++ b/src/de/dhbwstuttgart/parser/RunParser.java @@ -29,6 +29,7 @@ public class RunParser{ for(JavaClassName name : generator.reg.existingClasses){ System.out.println(name.toString()); } + System.out.println(generator.reg.existingClasses.size()); } catch(Exception e){ System.out.println("An exception occured which is unknown and on our TODO list."); diff --git a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java index 1c1448a1..38486593 100644 --- a/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java +++ b/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator.java @@ -13,17 +13,33 @@ public class SyntaxTreeGenerator{ public void getNames(Java8Parser.CompilationUnitContext ctx){ String packageDecl = ""; - List decls = ctx.packageDeclaration().Identifier(); - if(decls != null){ - for(TerminalNode t : decls){ + if(ctx.packageDeclaration() != null){ + for(TerminalNode t : ctx.packageDeclaration().Identifier()){ packageDecl = packageDecl + "." + t.toString(); } packageDecl = packageDecl.substring(1); } + String nameString = ""; for (Java8Parser.TypeDeclarationContext typeDecl : ctx.typeDeclaration()){ if(typeDecl.interfaceDeclaration() != null){ if(typeDecl.interfaceDeclaration().normalInterfaceDeclaration() != null){ - String nameString = packageDecl + "." + typeDecl.interfaceDeclaration().normalInterfaceDeclaration().Identifier().toString(); + if(packageDecl != ""){ + nameString = packageDecl + "." + typeDecl.interfaceDeclaration().normalInterfaceDeclaration().Identifier().toString(); + } + else{ + nameString = typeDecl.interfaceDeclaration().normalInterfaceDeclaration().Identifier().toString(); + } + this.reg.existingClasses.add(new JavaClassName(nameString)); + } + } + else{ + if(typeDecl.classDeclaration().normalClassDeclaration() != null){ + if(packageDecl != ""){ + nameString = packageDecl + "." + typeDecl.classDeclaration().normalClassDeclaration().Identifier().toString(); + } + else{ + nameString = typeDecl.classDeclaration().normalClassDeclaration().Identifier().toString(); + } this.reg.existingClasses.add(new JavaClassName(nameString)); } } diff --git a/src/de/dhbwstuttgart/parser/TODO b/src/de/dhbwstuttgart/parser/TODO index 2272602d..ae1d80c4 100644 --- a/src/de/dhbwstuttgart/parser/TODO +++ b/src/de/dhbwstuttgart/parser/TODO @@ -2,3 +2,4 @@ * Core-Problem: Typinferenz vs. Konstruktoren * möglicherweise Problem: falsche Return-Expressions +* Problem: Line-Comments werden nicht erkannt bzw. führen dazu dass das gesamte File nicht geparsed wird (Java8.g4).