From 8652b44d5d5c246cf75443a11401a11eaa972562 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Ko=C4=8Di=C4=8Dka?= <martin.kocicka@gmail.com>
Date: Wed, 11 May 2016 10:43:45 +0200
Subject: [PATCH] implemented generating unique end of input symbol for CFG

---
 alib2algo/src/grammar/parsing/LRParser.cpp | 26 +++++++++++++++++++++
 alib2algo/src/grammar/parsing/LRParser.h   | 27 ++++++++++++++++++++++
 2 files changed, 53 insertions(+)
 create mode 100644 alib2algo/src/grammar/parsing/LRParser.cpp
 create mode 100644 alib2algo/src/grammar/parsing/LRParser.h

diff --git a/alib2algo/src/grammar/parsing/LRParser.cpp b/alib2algo/src/grammar/parsing/LRParser.cpp
new file mode 100644
index 0000000000..4abbc01eed
--- /dev/null
+++ b/alib2algo/src/grammar/parsing/LRParser.cpp
@@ -0,0 +1,26 @@
+/*
+ * LRParser.cpp
+ *
+ *  Created on: 30. 4. 2016
+ *	  Author: Martin Kocicka
+ */
+
+#include "LRParser.h"
+
+#include <stack>
+
+namespace grammar {
+
+namespace parsing {
+
+alphabet::Symbol LRParser::getEndOfInputSymbol ( grammar::CFG originalGrammar ) {
+	alphabet::Symbol endOfInputSymbol = alphabet::symbolFrom ( "$" );
+	while ( originalGrammar.getTerminalAlphabet ( ) . find ( endOfInputSymbol ) != originalGrammar.getTerminalAlphabet ( ) . end ( ) ) {
+		endOfInputSymbol.inc ( );
+	}
+	return endOfInputSymbol;
+}
+
+} /* namespace parsing */
+
+} /* namespace grammar */
diff --git a/alib2algo/src/grammar/parsing/LRParser.h b/alib2algo/src/grammar/parsing/LRParser.h
new file mode 100644
index 0000000000..24fae9faaf
--- /dev/null
+++ b/alib2algo/src/grammar/parsing/LRParser.h
@@ -0,0 +1,27 @@
+/*
+ * LRParser.h
+ *
+ *  Created on: 30. 4. 2015
+ *	  Author: Martin Kocicka
+ */
+
+#ifndef LR_PARSER_H_
+#define LR_PARSER_H_
+
+#include <alphabet/Symbol.h>
+#include <grammar/ContextFree/CFG.h>
+
+namespace grammar {
+
+namespace parsing {
+
+class LRParser {
+public:
+	static alphabet::Symbol getEndOfInputSymbol ( grammar::CFG originalGrammar );
+};
+
+} /* namespace parsing */
+
+} /* namespace grammar */
+
+#endif /* LR_PARSER_H_ */
-- 
GitLab