From cee127d17ef99608b7e9a83bb9763091969c45c6 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:29:33 +0200
Subject: [PATCH] added type definitions for LR parsing

---
 alib2data/src/grammar/parsing/LRParserTypes.h | 37 +++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 alib2data/src/grammar/parsing/LRParserTypes.h

diff --git a/alib2data/src/grammar/parsing/LRParserTypes.h b/alib2data/src/grammar/parsing/LRParserTypes.h
new file mode 100644
index 0000000000..c950aa1d35
--- /dev/null
+++ b/alib2data/src/grammar/parsing/LRParserTypes.h
@@ -0,0 +1,37 @@
+/*
+ * LRParserTypes.h
+ *
+ *  Created on: 10. 5. 2016
+ *	  Author: Martin Kocicka
+ */
+
+#ifndef LR_PARSER_TYPES_H_
+#define LR_PARSER_TYPES_H_
+
+#include "../../alphabet/Symbol.h"
+#include "../../automaton/common/State.h"
+
+#include <map>
+#include <set>
+#include <variant>
+#include <vector>
+
+namespace grammar {
+
+namespace parsing {
+
+enum class LRAction {
+	Shift,
+	Reduce,
+	Accept
+};
+
+typedef std::map < alphabet::Symbol, std::set < std::pair < unsigned, std::vector < alphabet::Symbol > > > > LR0Items;
+typedef std::map < std::pair < automaton::State, alphabet::Symbol >, std::pair < LRAction, std::variant < automaton::State, std::pair < alphabet::Symbol, std::vector < alphabet::Symbol > > > > > LRActionTable;
+typedef std::map < std::pair < automaton::State, alphabet::Symbol >, automaton::State > LRGotoTable;
+
+} /* namespace parsing */
+
+} /* namespace grammar */
+
+#endif /* LR_PARSER_TYPES_H_ */
-- 
GitLab