diff options
Diffstat (limited to 'src/parser_state.hpp')
-rw-r--r-- | src/parser_state.hpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/parser_state.hpp b/src/parser_state.hpp index b183898..5dcce54 100644 --- a/src/parser_state.hpp +++ b/src/parser_state.hpp @@ -47,6 +47,9 @@ private: 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("") {} @@ -78,6 +81,19 @@ public: source_block = value; } + const std::vector<std::pair<std::string, std::string>> & get_extra_args() const { + return extra_args; + } + + void add_extra_arg(const char *type) { + current_extra_arg = type; + } + + void set_extra_arg_name(const char *name) { + extra_args.emplace_back(current_extra_arg, name); + } + + void new_rule(const char *nonterm); void add_rule_nonterminal(const char *nonterm); void add_rule_terminal(const char *term); |