2017-02-03 14:20:26 +00:00
|
|
|
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;
|
2017-02-03 14:20:26 +00:00
|
|
|
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;
|
2017-02-03 14:20:26 +00:00
|
|
|
|
|
|
|
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;
|
2017-02-03 14:20:26 +00:00
|
|
|
}
|
|
|
|
}
|