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

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

View File

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

View File

@ -52,7 +52,7 @@ public final class ASTBalancer {
log(tree.toString());
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

View File

@ -23,7 +23,7 @@ public final class ASTCompacter {
log("\nCleaned Tree:\n" + tree);
log("-".repeat(100));
System.out.println("- Tree compression successful.");
System.out.println(" - Compressing syntax-tree...");
}
// 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 {
System.out.println(" - Reading parser-grammar...");
List<String> lines = Files.readAllLines(path);
lines = lines.stream()
@ -182,6 +183,7 @@ public class Grammar {
log("\n" + actions);
log("-".repeat(100));
System.out.println("Grammar parsed successfully.");
return new Grammar(terminals, nonterminals,
startSymbol, epsilonSymbol,

View File

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