summaryrefslogtreecommitdiffstats
path: root/src/parser_state.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser_state.hpp')
-rw-r--r--src/parser_state.hpp42
1 files changed, 7 insertions, 35 deletions
diff --git a/src/parser_state.hpp b/src/parser_state.hpp
index 5dcce54..4fd057d 100644
--- a/src/parser_state.hpp
+++ b/src/parser_state.hpp
@@ -26,63 +26,35 @@
#pragma once
-#include "item.hpp"
-
-#include <map>
+#include "grammar.hpp"
namespace solar {
class parser_state_t {
private:
- std::vector<std::tuple<item_t, std::vector<std::string>, std::string>> rules;
- std::map<std::string, std::string> nonterm_types;
- std::map<symbol_t, std::pair<std::string, std::string>> term_types;
+ grammar_t grammar;
item_t current;
std::vector<std::string> current_vars;
std::string current_var;
std::string current_type;
- std::string header_block;
- std::string source_block;
-
std::string current_extra_arg;
- std::vector<std::pair<std::string, std::string>> extra_args;
public:
parser_state_t() : current("") {}
- const std::vector<std::tuple<item_t, std::vector<std::string>, std::string>> & get_rules() const {
- return rules;
- }
-
- const std::map<std::string, std::string> & get_nonterm_types() const {
- return nonterm_types;
- }
-
- const std::map<symbol_t, std::pair<std::string, std::string>> & get_term_types() const {
- return term_types;
- }
-
- const std::string & get_header_block() const {
- return header_block;
+ const grammar_t & get_grammar() const {
+ return grammar;
}
void set_header_block(const char *value) {
- header_block = value;
- }
-
- const std::string & get_source_block() const {
- return source_block;
+ grammar.header_block = value;
}
void set_source_block(const char *value) {
- source_block = value;
- }
-
- const std::vector<std::pair<std::string, std::string>> & get_extra_args() const {
- return extra_args;
+ grammar.source_block = value;
}
void add_extra_arg(const char *type) {
@@ -90,7 +62,7 @@ public:
}
void set_extra_arg_name(const char *name) {
- extra_args.emplace_back(current_extra_arg, name);
+ grammar.extra_args.emplace_back(current_extra_arg, name);
}