diff options
Diffstat (limited to 'src/parser_state.hpp')
-rw-r--r-- | src/parser_state.hpp | 42 |
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); } |