diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-09 03:31:20 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-09 03:31:20 +0200 |
commit | 59258d1f71d36502cf778dd089409146fd085c12 (patch) | |
tree | d9974750b88a979113adba40a6db4b48d750bdd4 /src/parser_state.hpp | |
parent | 80abbf2be25e4c760fe80c9f6694047db6c7cfe4 (diff) | |
download | solar-59258d1f71d36502cf778dd089409146fd085c12.tar solar-59258d1f71d36502cf778dd089409146fd085c12.zip |
Add support for extra arguments
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); |