diff --git a/src/de/dhbwstuttgart/parser/CompilationUnitEvaluator.java b/src/de/dhbwstuttgart/parser/CompilationUnitEvaluator.java new file mode 100644 index 000000000..fa1b7d1d4 --- /dev/null +++ b/src/de/dhbwstuttgart/parser/CompilationUnitEvaluator.java @@ -0,0 +1,24 @@ +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.tree.*; +import de.dhbwstuttgart.syntaxtree.*; +public class CompilationUnitEvaluator extends Java8BaseListener{ + @Override + public void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx) { + System.out.println("SourceFile("); + } + @Override + public void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx) { + System.out.println(")"); + } + + @Override + public void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { + System.out.println("package("); + } + + @Override + public void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { + System.out.println(ctx.Identifier()); + System.out.println(")"); + } +} diff --git a/src/de/dhbwstuttgart/parser/JavaClassName.java b/src/de/dhbwstuttgart/parser/JavaClassName.java deleted file mode 100644 index 4e6ba81ba..000000000 --- a/src/de/dhbwstuttgart/parser/JavaClassName.java +++ /dev/null @@ -1,130 +0,0 @@ -package de.dhbwstuttgart.parser; - -import de.dhbwstuttgart.typeinference.Menge; - -import de.dhbwstuttgart.syntaxtree.type.RefType; - -/** - * Stellt den Namen einer Java Klasse dar. - * Dieser kann auch den Packagenamen mit beinhalten: de.dhbwstuttgart.typeinference.Menge - * - * @author janulrich - * - * - */ -public class JavaClassName { - - private String name; - private PackageName packageName; - - /** - * TODO: JavaClassName sollten aus den Assumptions generiert werden. - * Diese wissen, welche Typen und Typnamen existieren und können direkt auf Korrektheit prüfen. - */ - JavaClassName(String name){ - if(name == null)throw new NullPointerException(); - - String[] names = name.split("[.]"); - boolean match = true; - if(names.length == 1){ - //packageName = new PackageName(); - this.name = name; - }else { - name = names[names.length-1]; - Menge packageNames = new Menge(); - for(int i = 0; i names = new Menge(); - - public PackageName(Menge packageNames) { - names = packageNames; - } - - public PackageName() { - //Do nothing - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((names == null) ? 0 : names.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - PackageName other = (PackageName) obj; - if (names == null) { - if (other.names != null) - return false; - } else if (!names.equals(other.names)) - return false; - return true; - } - - @Override - public String toString() { - String ret = ""; - if(names == null)return ""; - for(String n : names)ret+=n+"."; - return ret; - } -} diff --git a/src/de/dhbwstuttgart/parser/JavaClassRegistry.java b/src/de/dhbwstuttgart/parser/JavaClassRegistry.java deleted file mode 100644 index 4282f662e..000000000 --- a/src/de/dhbwstuttgart/parser/JavaClassRegistry.java +++ /dev/null @@ -1,18 +0,0 @@ -package de.dhbwstuttgart.parser; - -import java.util.ArrayList; -import java.util.List; - -/** - * Speichert die Klassen im aktuellen Projektscope - */ -public class JavaClassRegistry { - public List existingClasses = new ArrayList<>(); - - public JavaClassName getName(String className) { - for(JavaClassName name : existingClasses){ - if(name.toString().equals(className))return name; - } - throw new TypeNotPresentException(className, new Throwable()); - } -} diff --git a/src/de/dhbwstuttgart/parser/RunParser.java b/src/de/dhbwstuttgart/parser/RunParser.java new file mode 100644 index 000000000..9b1c86539 --- /dev/null +++ b/src/de/dhbwstuttgart/parser/RunParser.java @@ -0,0 +1,34 @@ +package de.dhbwstuttgart.parser; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.ANTLRInputStream; +import org.antlr.v4.runtime.CommonTokenStream; +import org.antlr.v4.runtime.ParserRuleContext; +import org.antlr.v4.runtime.tree.ParseTreeWalker; +import de.dhbwstuttgart.syntaxtree.*; + +import java.util.Scanner; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +public class RunParser{ + public static void main(String[] args){ + try{ + Scanner sc = new Scanner(System.in); + String inputString = sc.nextLine(); + while(sc.hasNextLine()) inputString = inputString + sc.nextLine(); + InputStream stream = new ByteArrayInputStream(inputString.getBytes(StandardCharsets.UTF_8)); + ANTLRInputStream input = new ANTLRInputStream(stream); + Java8Lexer lexer = new Java8Lexer(input); + CommonTokenStream tokens = new CommonTokenStream(lexer); + Java8Parser parser = new Java8Parser(tokens); + ParserRuleContext tree = parser.compilationUnit(); + ParseTreeWalker walker = new ParseTreeWalker(); + CompilationUnitEvaluator eval = new CompilationUnitEvaluator(); + walker.walk(eval, tree); + } + catch(Exception e){ + System.out.println("An exception occured which is unknown and on our TODO list."); + e.printStackTrace(); + } + } +}