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.hpp16
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);