From 989532a6a289fd54b6b3f13759dc91f7138144d2 Mon Sep 17 00:00:00 2001 From: Houtan Bastani <houtan@dynare.org> Date: Fri, 9 Nov 2018 14:51:00 +0100 Subject: [PATCH] add `string`, vec_str key/value option to posterior_sampler_options --- src/DynareBison.yy | 2 ++ src/ParsingDriver.cc | 14 ++++++++++++++ src/ParsingDriver.hh | 2 ++ 3 files changed, 18 insertions(+) diff --git a/src/DynareBison.yy b/src/DynareBison.yy index e3e710c4..09f5d744 100644 --- a/src/DynareBison.yy +++ b/src/DynareBison.yy @@ -2186,6 +2186,8 @@ list_sampling_option : QUOTED_STRING COMMA QUOTED_STRING { driver.sampling_options_string($1, $3); } | QUOTED_STRING COMMA signed_number { driver.sampling_options_num($1, $3); } + | QUOTED_STRING COMMA vec_str + { driver.sampling_options_vec_str($1, $3); } | QUOTED_STRING COMMA '(' sub_sampling_options ')' { driver.sampling_options_string($1, '(' + $4 + ')'); } ; diff --git a/src/ParsingDriver.cc b/src/ParsingDriver.cc index 4af2922c..09a45054 100644 --- a/src/ParsingDriver.cc +++ b/src/ParsingDriver.cc @@ -1984,6 +1984,20 @@ ParsingDriver::sampling_options_num(const string &name, const string &value) options_list.string_options["posterior_sampler_options.sampling_opt"] += value; } +void +ParsingDriver::sampling_options_vec_str(const string &name, vector<string> value) +{ + sampling_options_helper(name); + options_list.string_options["posterior_sampler_options.sampling_opt"] += "{"; + for (auto &it : value) + { + if (&it != &value.front()) + options_list.string_options["posterior_sampler_options.sampling_opt"] += ","; + options_list.string_options["posterior_sampler_options.sampling_opt"] += "''" + it + "''"; + } + options_list.string_options["posterior_sampler_options.sampling_opt"] += "}"; +} + void ParsingDriver::check_varobs() { diff --git a/src/ParsingDriver.hh b/src/ParsingDriver.hh index 9eef5f57..c8fb1969 100644 --- a/src/ParsingDriver.hh +++ b/src/ParsingDriver.hh @@ -556,6 +556,8 @@ public: void sampling_options_string(const string &name, const string &value); //! Adds an sampling option (numeric value) void sampling_options_num(const string &name, const string &value); + //! Adds an sampling option (vec_str value) + void sampling_options_vec_str(const string &name, vector<string> value); //! Check that no observed variable has yet be defined void check_varobs(); //! Add a new observed variable -- GitLab