package de.fuberlin.projectci;
import java.util.Map;
import java.util.Set;
import de.fuberlin.projectci.grammar.BNFGrammarReader;
import de.fuberlin.projectci.grammar.BNFParsingErrorException;
import de.fuberlin.projectci.grammar.Grammar;
import de.fuberlin.projectci.grammar.GrammarReader;
import de.fuberlin.projectci.grammar.NonTerminalSymbol;
import de.fuberlin.projectci.grammar.Symbol;
import de.fuberlin.projectci.grammar.TerminalSymbol;
public class Grammar_FIRST_FOLLOW_Test {
/**
* @param args
*/
public static void main(String[] args) {
Grammar g = new Grammar();
try {
GrammarReader gReader = new BNFGrammarReader();
g = gReader.readGrammar("./input/de/fuberlin/projectci/quellsprache_bnf.txt");
} catch (BNFParsingErrorException e) {
e.printStackTrace();
}
System.out.println("=== Grammatik ===");
System.out.println(g);
System.out.println();
System.out.println("=== FIRST ===");
Map<Symbol,Set<TerminalSymbol>> firstSets = g.calculateFirstSets();
for(Symbol s :firstSets.keySet() ) {
System.out.print(s);
System.out.print("\t => {");
for(TerminalSymbol t : firstSets.get(s)) {
System.out.print(t.toString()+", ");
}
System.out.println("}");
}
System.out.println("=== FOLLOW ===");
Map<NonTerminalSymbol, Set<TerminalSymbol>> followSets = g.calculateFollowSets();
for(Symbol s :followSets.keySet() ) {
System.out.print(s);
System.out.print("\t => {");
for(TerminalSymbol t : followSets.get(s)) {
System.out.print(t.toString()+", ");
}
System.out.println("}");
}
}
}