add main class
This commit is contained in:
@ -1,6 +1,63 @@
|
|||||||
public class StupsCompiler {
|
import lexer.StupsLexer;
|
||||||
|
import org.antlr.v4.runtime.CharStreams;
|
||||||
|
import org.antlr.v4.runtime.Lexer;
|
||||||
|
import parser.LL1Parser;
|
||||||
|
import parser.grammar.Grammar;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public final class StupsCompiler {
|
||||||
|
|
||||||
|
private StupsCompiler() {}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println("StupsCompiler");
|
System.out.println("StupsCompiler: " + Arrays.toString(args) + "\n");
|
||||||
|
|
||||||
|
if (args.length != 2) {
|
||||||
|
System.out.println("Falsche Argumente.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (args[0]) {
|
||||||
|
case "-compile" -> compile(args[1]);
|
||||||
|
case "-liveness" -> liveness(args[1]);
|
||||||
|
default -> System.out.println("Falsche Argumente.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void compile(String filename) {
|
||||||
|
System.out.println("Beginning compilation.");
|
||||||
|
|
||||||
|
Lexer lexer;
|
||||||
|
try {
|
||||||
|
Path programPath = Paths.get(System.getProperty("user.dir") + "/" + filename);
|
||||||
|
lexer = new StupsLexer(CharStreams.fromPath(programPath));
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Das Programm konnte nicht gelesen werden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Grammar grammar;
|
||||||
|
try {
|
||||||
|
Path grammarFile = Paths.get(StupsCompiler.class.getResource("Grammar.grammar").toURI());
|
||||||
|
grammar = Grammar.fromFile(grammarFile);
|
||||||
|
} catch (IOException | URISyntaxException e) {
|
||||||
|
System.out.println("Die Grammatik konnte nicht geöffnet werden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LL1Parser parser = LL1Parser.fromGrammar(grammar);
|
||||||
|
|
||||||
|
parser.parse(lexer.getAllTokens(), lexer.getVocabulary());
|
||||||
|
|
||||||
|
System.out.println("Compilation completed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void liveness(String filename) {
|
||||||
|
System.out.println("Liveness-Analyse für " + filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user