2017-02-03 14:20:26 +00:00
|
|
|
package de.dhbwstuttgart.parser;
|
|
|
|
|
2017-09-20 12:00:44 +00:00
|
|
|
import de.dhbwstuttgart.core.CompilationEnvironment;
|
2017-03-15 15:17:07 +00:00
|
|
|
import de.dhbwstuttgart.parser.SyntaxTreeGenerator.SyntaxTreeGenerator;
|
2017-02-03 14:20:26 +00:00
|
|
|
import de.dhbwstuttgart.parser.antlr.Java8Lexer;
|
|
|
|
import de.dhbwstuttgart.parser.antlr.Java8Parser;
|
|
|
|
import de.dhbwstuttgart.syntaxtree.SourceFile;
|
2017-02-03 14:22:45 +00:00
|
|
|
import de.dhbwstuttgart.typecheck.JavaClassRegistry;
|
2017-02-03 14:20:26 +00:00
|
|
|
import org.antlr.v4.runtime.ANTLRInputStream;
|
|
|
|
import org.antlr.v4.runtime.CommonTokenStream;
|
|
|
|
|
|
|
|
import java.io.*;
|
2017-07-05 15:52:23 +00:00
|
|
|
import java.nio.charset.StandardCharsets;
|
2017-02-10 16:37:42 +00:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
2017-02-03 14:20:26 +00:00
|
|
|
|
|
|
|
public class JavaTXParser {
|
2017-09-20 12:00:44 +00:00
|
|
|
CompilationEnvironment environment;
|
|
|
|
|
|
|
|
public JavaTXParser(CompilationEnvironment env) {
|
|
|
|
environment = env;
|
|
|
|
}
|
|
|
|
|
2017-07-14 15:47:02 +00:00
|
|
|
public SourceFile parse(InputStream source) throws IOException, java.lang.ClassNotFoundException {
|
2017-07-05 15:50:38 +00:00
|
|
|
InputStream stream = source;//new FileInputStream(sourceFile);
|
2017-02-10 16:37:42 +00:00
|
|
|
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();
|
2017-07-14 15:47:02 +00:00
|
|
|
|
|
|
|
JavaClassRegistry reg = new JavaClassRegistry(new ArrayList<>());
|
|
|
|
reg.addPackage("java.lang");
|
|
|
|
SyntaxTreeGenerator generator = new SyntaxTreeGenerator(reg);
|
2017-07-05 15:50:38 +00:00
|
|
|
return generator.convert(tree);
|
2017-02-10 16:37:42 +00:00
|
|
|
}
|
|
|
|
|
2017-07-14 15:47:02 +00:00
|
|
|
public SourceFile parse(File file) throws IOException, java.lang.ClassNotFoundException {
|
2017-07-05 15:50:38 +00:00
|
|
|
return this.parse(new FileInputStream(file));
|
|
|
|
}
|
2017-07-05 15:52:23 +00:00
|
|
|
|
2017-07-14 15:47:02 +00:00
|
|
|
public SourceFile parse(String fileContent) throws IOException, java.lang.ClassNotFoundException {
|
2017-07-05 15:52:23 +00:00
|
|
|
return this.parse(new ByteArrayInputStream(fileContent.getBytes(StandardCharsets.UTF_8)));
|
|
|
|
}
|
2017-02-03 14:20:26 +00:00
|
|
|
}
|