JavaPatternMatching/src/de/dhbwstuttgart/parser/JavaTXParser.java

47 lines
1.8 KiB
Java
Raw Normal View History

package de.dhbwstuttgart.parser;
import de.dhbwstuttgart.environment.CompilationEnvironment;
import de.dhbwstuttgart.environment.JavaClassRegistry;
2017-03-15 15:17:07 +00:00
import de.dhbwstuttgart.parser.SyntaxTreeGenerator.SyntaxTreeGenerator;
import de.dhbwstuttgart.parser.antlr.Java8Lexer;
import de.dhbwstuttgart.parser.antlr.Java8Parser;
import de.dhbwstuttgart.syntaxtree.SourceFile;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import java.io.*;
import java.nio.charset.StandardCharsets;
2017-02-10 16:37:42 +00:00
import java.util.ArrayList;
import java.util.List;
public class JavaTXParser {
2017-09-20 12:00:44 +00:00
CompilationEnvironment environment;
public JavaTXParser(CompilationEnvironment env) {
environment = env;
}
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();
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
}
public SourceFile parse(File file) throws IOException, java.lang.ClassNotFoundException {
2017-07-05 15:50:38 +00:00
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)));
}
}