package de.dhbwstuttgart.parser; import de.dhbwstuttgart.core.CompilationEnvironment; import de.dhbwstuttgart.parser.SyntaxTreeGenerator.SyntaxTreeGenerator; import de.dhbwstuttgart.parser.antlr.Java8Lexer; import de.dhbwstuttgart.parser.antlr.Java8Parser; import de.dhbwstuttgart.syntaxtree.SourceFile; import de.dhbwstuttgart.typecheck.JavaClassRegistry; import org.antlr.v4.runtime.ANTLRInputStream; import org.antlr.v4.runtime.CommonTokenStream; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; public class JavaTXParser { CompilationEnvironment environment; public JavaTXParser(CompilationEnvironment env) { environment = env; } public SourceFile parse(InputStream source) throws IOException, java.lang.ClassNotFoundException { InputStream stream = source;//new FileInputStream(sourceFile); ANTLRInputStream input = new ANTLRInputStream(stream); Java8Lexer lexer = new Java8Lexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); Java8Parser parser = new Java8Parser(tokens); Java8Parser.CompilationUnitContext tree = parser.compilationUnit(); JavaClassRegistry reg = new JavaClassRegistry(new ArrayList<>()); reg.addPackage("java.lang"); SyntaxTreeGenerator generator = new SyntaxTreeGenerator(reg); return generator.convert(tree); } public SourceFile parse(File file) throws IOException, java.lang.ClassNotFoundException { return this.parse(new FileInputStream(file)); } public SourceFile parse(String fileContent) throws IOException, java.lang.ClassNotFoundException { return this.parse(new ByteArrayInputStream(fileContent.getBytes(StandardCharsets.UTF_8))); } }