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

45 lines
1.5 KiB
Java
Raw Normal View History

package de.dhbwstuttgart.parser;
import de.dhbwstuttgart.parser.antlr.Java8Lexer;
import de.dhbwstuttgart.parser.antlr.Java8Parser;
import de.dhbwstuttgart.syntaxtree.ClassOrInterface;
import de.dhbwstuttgart.syntaxtree.SourceFile;
import de.dhbwstuttgart.syntaxtree.modifier.Modifier;
2017-02-03 14:22:45 +00:00
import de.dhbwstuttgart.typecheck.JavaClassRegistry;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import java.io.*;
2017-02-10 16:37:42 +00:00
import java.util.ArrayList;
import java.util.List;
public class JavaTXParser {
public SourceFile parse(File sourceFile) throws IOException {
2017-02-10 16:37:42 +00:00
InputStream stream = 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();
SyntaxTreeGenerator generator = new SyntaxTreeGenerator(new JavaClassRegistry(generateJavaLangNames()));
return generator.convert(tree);
}
private List<String> generateJavaLangNames(){
List<String> ret = new ArrayList<>();
//TODO: Eigentlich sind es noch viele mehr:
ret.add("java.lang.String");
ret.add("java.lang.Boolean");
ret.add("java.lang.Integer");
ret.add("java.lang.Double");
ret.add("java.lang.Float");
ret.add("java.lang.Long");
ret.add("java.lang.Byte");
return ret;
}
}