diff --git a/alib/src/grammar/GrammarPrinter.cpp b/alib/src/grammar/GrammarPrinter.cpp
index 10122134fdc14aa7058b35dfbe483b92ceea7728..fea3634a9a984c6ac34d5e30f52df4ccca53462a 100644
--- a/alib/src/grammar/GrammarPrinter.cpp
+++ b/alib/src/grammar/GrammarPrinter.cpp
@@ -9,58 +9,60 @@
 
 namespace grammar {
 
+const string GrammarPrinter::INDENTATION = "\t";
+
 void GrammarPrinter::toXML(const Grammar& grammar, ostream& out) {
 	out << "<grammar>\n";
-	printNonTerminals(grammar, out);
-	printTerminals(grammar, out);
-	printRules(grammar, out);
-	printStartSymbol(grammar, out);
+	printNonTerminalSymbols(grammar, out, INDENTATION);
+	printTerminalSymbols(grammar, out, INDENTATION);
+	printRules(grammar, out, INDENTATION);
+	printStartSymbol(grammar, out, INDENTATION);
 	out << "</grammar>\n";
 }
 
-void GrammarPrinter::printNonTerminals(const Grammar& grammar, ostream& out) {
-	out << "<nonTerminalSymbols>\n";
+void GrammarPrinter::printNonTerminalSymbols(const Grammar& grammar, ostream& out, string prefix) {
+	out << prefix << "<nonTerminalSymbols>\n";
 	for (auto &symbol : grammar.getNonTerminalSymbols()) {
-		symbol.toXML(out, "");
+		symbol.toXML(out, prefix + INDENTATION);
 	}
-	out << "</nonTerminalSymbols>\n";
+	out << prefix << "</nonTerminalSymbols>\n";
 }
 
-void GrammarPrinter::printTerminals(const Grammar& grammar, ostream& out) {
-	out << "<terminalSymbols>\n";
+void GrammarPrinter::printTerminalSymbols(const Grammar& grammar, ostream& out, string prefix) {
+	out << prefix << "<terminalSymbols>\n";
 	for (auto& symbol : grammar.getTerminalSymbols()) {
-		symbol.toXML(out, "");
+		symbol.toXML(out, prefix + INDENTATION);
 	}
-	out << "</terminalSymbols>\n";
+	out << prefix <<"</terminalSymbols>\n";
 }
 
-void GrammarPrinter::printRules(const Grammar& grammar, ostream& out) {
-	out << "<rules>\n";
+void GrammarPrinter::printRules(const Grammar& grammar, ostream& out, string prefix) {
+	out << prefix << "<rules>\n";
 	for (auto& rule : grammar.getRules()) {
-		printRule(rule, out);
+		printRule(rule, out, prefix + INDENTATION);
 	}
-	out << "</rules>\n";
+	out << prefix << "</rules>\n";
 }
 
-void GrammarPrinter::printRule(const Rule& rule, ostream& out) {
-	out << "<rule>\n";
-	out << "<leftSide>\n";
+void GrammarPrinter::printRule(const Rule& rule, ostream& out, string prefix) {
+	out << prefix << "<rule>\n";
+	out << prefix << INDENTATION << "<leftSide>\n";
 	for (auto& symbol : rule.getLeftSide()) {
-		symbol.toXML(out, "");
+		symbol.toXML(out, prefix + INDENTATION + INDENTATION);
 	}
-	out << "</leftSide>\n";
-	out << "<rightSide>\n";
+	out << prefix << INDENTATION << "</leftSide>\n";
+	out << prefix << INDENTATION << "<rightSide>\n";
 	for (auto& symbol : rule.getRightSide()) {
-		symbol.toXML(out, "");
+		symbol.toXML(out, prefix + INDENTATION + INDENTATION);
 	}
-	out << "</rightSide>\n";
-	out << "</rule>\n";
+	out << prefix << INDENTATION << "</rightSide>\n";
+	out << prefix << "</rule>\n";
 }
 
-void GrammarPrinter::printStartSymbol(const Grammar& grammar, ostream& out) {
-	out << "<startSymbol>";
+void GrammarPrinter::printStartSymbol(const Grammar& grammar, ostream& out, string prefix) {
+	out << prefix << "<startSymbol>";
 	out << grammar.getStartSymbol().getSymbol();
-	out << "</startSymbol>\n";
+	out <<"</startSymbol>\n";
 }
 
 } /* namespace grammar */
diff --git a/alib/src/grammar/GrammarPrinter.h b/alib/src/grammar/GrammarPrinter.h
index 28a15c0bea4d16730ffd7d4c523fe2a82aeb757c..c3ad03b67b96508cb802af4ff44a8c89c9f4405f 100644
--- a/alib/src/grammar/GrammarPrinter.h
+++ b/alib/src/grammar/GrammarPrinter.h
@@ -16,15 +16,16 @@ namespace grammar {
 using namespace std;
 
 class GrammarPrinter {
-public:
-	static void toXML(const Grammar& grammar, ostream& out);
 protected:
-	static void printNonTerminals(const Grammar& grammar, ostream& out);
-	static void printTerminals(const Grammar& grammar, ostream& out);
-	static void printRules(const Grammar& grammar, ostream& out);
-	static void printRule(const Rule& rule, ostream& out);
-	static void printStartSymbol(const Grammar& grammar, ostream& out);
+	static const string INDENTATION;
 
+	static void printNonTerminalSymbols(const Grammar& grammar, ostream& out, string prefix);
+	static void printTerminalSymbols(const Grammar& grammar, ostream& out, string prefix);
+	static void printRules(const Grammar& grammar, ostream& out, string prefix);
+	static void printRule(const Rule& rule, ostream& out, string prefix);
+	static void printStartSymbol(const Grammar& grammar, ostream& out, string prefix);
+public:
+	static void toXML(const Grammar& grammar, ostream& out);
 };
 
 } /* namespace grammar */