summaryrefslogtreecommitdiffstats
path: root/src/parser_state.hpp
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2015-04-09 03:31:20 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2015-04-09 03:31:20 +0200
commit59258d1f71d36502cf778dd089409146fd085c12 (patch)
treed9974750b88a979113adba40a6db4b48d750bdd4 /src/parser_state.hpp
parent80abbf2be25e4c760fe80c9f6694047db6c7cfe4 (diff)
downloadsolar-59258d1f71d36502cf778dd089409146fd085c12.tar
solar-59258d1f71d36502cf778dd089409146fd085c12.zip
Add support for extra arguments
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);