slight formatting changes

This commit is contained in:
ChUrl
2020-12-15 19:57:21 +01:00
parent 1333f24d03
commit 3c17220ef1
11 changed files with 27 additions and 14 deletions

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="CompilerProjekt:main" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="de.churl" external.system.module.version="1.0-SNAPSHOT" type="JAVA_MODULE" version="4"> <module external.linked.project.id="CompilerProjekt" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="de.churl" external.system.module.version="1.0-SNAPSHOT" type="JAVA_MODULE" version="4">
<component name="CheckStyle-IDEA-Module"> <component name="CheckStyle-IDEA-Module">
<option name="configuration"> <option name="configuration">
<map /> <map />

View File

@ -9,6 +9,16 @@ version '1.0-SNAPSHOT'
sourceCompatibility = '14' sourceCompatibility = '14'
mainClassName = 'StupsCompiler' mainClassName = 'StupsCompiler'
jar {
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
generateGrammarSource { generateGrammarSource {
outputDirectory = file("src/main/java/lexer") outputDirectory = file("src/main/java/lexer")
} }

View File

@ -67,7 +67,7 @@ public final class StupsCompiler {
tree.postprocess(grammar); tree.postprocess(grammar);
TypeChecker.validate(tree); TypeChecker.validate(tree);
System.out.println("Compilation completed."); System.out.println("\nCompilation completed.");
} }
private static void liveness(String filename) { private static void liveness(String filename) {

View File

@ -7,8 +7,6 @@ import parser.ast.ASTNode;
import parser.grammar.Grammar; import parser.grammar.Grammar;
import parser.grammar.GrammarAnalyzer; import parser.grammar.GrammarAnalyzer;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayDeque; import java.util.ArrayDeque;
import java.util.Deque; import java.util.Deque;
import java.util.List; import java.util.List;
@ -24,16 +22,13 @@ public class StupsParser {
this.parsetable = parsetable; this.parsetable = parsetable;
} }
public static StupsParser fromGrammar(Path path) throws IOException {
return StupsParser.fromGrammar(Grammar.fromFile(path));
}
public static StupsParser fromGrammar(Grammar grammar) { public static StupsParser fromGrammar(Grammar grammar) {
final GrammarAnalyzer analyzer = new GrammarAnalyzer(grammar); final GrammarAnalyzer analyzer = new GrammarAnalyzer(grammar);
return new StupsParser(analyzer.getTable()); return new StupsParser(analyzer.getTable());
} }
public AST parse(List<? extends Token> token, Vocabulary voc) { public AST parse(List<? extends Token> token, Vocabulary voc) {
System.out.println(" - Parsing program...");
final ASTNode root = new ASTNode(this.parsetable.getStartSymbol(), 0); final ASTNode root = new ASTNode(this.parsetable.getStartSymbol(), 0);
final AST tree = new AST(root); final AST tree = new AST(root);
final Deque<ASTNode> stack = new ArrayDeque<>(); final Deque<ASTNode> stack = new ArrayDeque<>();
@ -118,7 +113,7 @@ public class StupsParser {
log("\nParsed AST:\n" + tree); log("\nParsed AST:\n" + tree);
log("-".repeat(100) + "\n"); log("-".repeat(100) + "\n");
System.out.println("- Parsing successful."); System.out.println("Parsing successful.");
return tree; return tree;
} }

View File

@ -23,6 +23,7 @@ public class AST {
public void postprocess(Grammar grammar) { public void postprocess(Grammar grammar) {
ASTCompacter.clean(this, grammar); ASTCompacter.clean(this, grammar);
ASTBalancer.balance(this); ASTBalancer.balance(this);
System.out.println("Tree processing successful.");
} }
public AST deepCopy() { public AST deepCopy() {

View File

@ -52,7 +52,7 @@ public final class ASTBalancer {
log(tree.toString()); log(tree.toString());
log("-".repeat(100)); log("-".repeat(100));
System.out.println("- Tree balancing successful."); System.out.println(" - Balancing syntax-tree...");
} }
// Baum spiegeln, damit höhere Ebenen links sind und EXPR vorwärts laufen // Baum spiegeln, damit höhere Ebenen links sind und EXPR vorwärts laufen

View File

@ -23,7 +23,7 @@ public final class ASTCompacter {
log("\nCleaned Tree:\n" + tree); log("\nCleaned Tree:\n" + tree);
log("-".repeat(100)); log("-".repeat(100));
System.out.println("- Tree compression successful."); System.out.println(" - Compressing syntax-tree...");
} }
// Entfernt [promote]-able Nodes (Reicht Werte nach oben) // Entfernt [promote]-able Nodes (Reicht Werte nach oben)

View File

@ -63,6 +63,7 @@ public class Grammar {
} }
public static Grammar fromFile(Path path) throws IOException { public static Grammar fromFile(Path path) throws IOException {
System.out.println(" - Reading parser-grammar...");
List<String> lines = Files.readAllLines(path); List<String> lines = Files.readAllLines(path);
lines = lines.stream() lines = lines.stream()
@ -182,6 +183,7 @@ public class Grammar {
log("\n" + actions); log("\n" + actions);
log("-".repeat(100)); log("-".repeat(100));
System.out.println("Grammar parsed successfully.");
return new Grammar(terminals, nonterminals, return new Grammar(terminals, nonterminals,
startSymbol, epsilonSymbol, startSymbol, epsilonSymbol,

View File

@ -31,12 +31,14 @@ public class GrammarAnalyzer {
log("Analyzing Grammar:\n"); log("Analyzing Grammar:\n");
// Es muss zwingend in der Reihenfolge [Nullable < First < Follow < Table] initialisiert werden // Es muss zwingend in der Reihenfolge [Nullable < First < Follow < Table] initialisiert werden
System.out.println(" - Initializing first-set...");
this.first = this.initFirst(); this.first = this.initFirst();
System.out.println(" - Initializing follow-set...");
this.follow = this.initFollow(); this.follow = this.initFollow();
System.out.println(" - Initializing parse-table...");
this.table = this.initParseTable(); this.table = this.initParseTable();
System.out.println("\n- Grammar analysis successful."); System.out.println("Grammar analysis successful.");
} }
private Map<String, Set<String>> initFirst() { private Map<String, Set<String>> initFirst() {

View File

@ -23,11 +23,13 @@ public final class TypeChecker {
final TypeTable table = TypeTable.fromAST(tree); final TypeTable table = TypeTable.fromAST(tree);
final Map<ASTNode, String> nodeTable = new HashMap<>(); final Map<ASTNode, String> nodeTable = new HashMap<>();
System.out.println(" - Validating syntax-tree...");
log("Typevalidation:"); log("Typevalidation:");
validate(tree.getRoot(), table, nodeTable); validate(tree.getRoot(), table, nodeTable);
log("-".repeat(100)); log("-".repeat(100));
System.out.println("- Typechecking successful.\n"); System.out.println("Typechecking successful.");
} }
private static void validate(ASTNode root, TypeTable table, Map<ASTNode, String> nodeTable) { private static void validate(ASTNode root, TypeTable table, Map<ASTNode, String> nodeTable) {

View File

@ -54,6 +54,7 @@ public class TypeTable {
} }
public static TypeTable fromAST(AST tree) { public static TypeTable fromAST(AST tree) {
System.out.println(" - Building TypeTable...");
final Map<String, String> tableOut = new HashMap<>(); final Map<String, String> tableOut = new HashMap<>();
log("Creating TypeTable"); log("Creating TypeTable");