diff --git a/DynareBison.yy b/DynareBison.yy index 08052f77..8753ac38 100644 --- a/DynareBison.yy +++ b/DynareBison.yy @@ -430,6 +430,12 @@ parameter_list : parameter_list symbol { driver.declare_parameter($3, $4); } | symbol TEX_NAME { driver.declare_parameter($1, $2); } + | parameter_list symbol TEX_NAME named_var + { driver.declare_parameter($2, $3, $4); } + | parameter_list COMMA symbol TEX_NAME named_var + { driver.declare_parameter($3, $4, $5); } + | symbol TEX_NAME named_var + { driver.declare_parameter($1, $2, $3); } ; predetermined_variables_list : predetermined_variables_list symbol diff --git a/ParsingDriver.cc b/ParsingDriver.cc index 79505b31..4e0a0e05 100644 --- a/ParsingDriver.cc +++ b/ParsingDriver.cc @@ -186,12 +186,14 @@ ParsingDriver::declare_exogenous_det(string *name, string *tex_name, string *lon } void -ParsingDriver::declare_parameter(string *name, string *tex_name) +ParsingDriver::declare_parameter(string *name, string *tex_name, string *long_name) { - declare_symbol(name, eParameter, tex_name, NULL); + declare_symbol(name, eParameter, tex_name, long_name); delete name; if (tex_name != NULL) delete tex_name; + if (long_name != NULL) + delete long_name; } void diff --git a/ParsingDriver.hh b/ParsingDriver.hh index 27d9800b..cb266d45 100644 --- a/ParsingDriver.hh +++ b/ParsingDriver.hh @@ -264,7 +264,7 @@ public: //! Declares an exogenous deterministic variable void declare_exogenous_det(string *name, string *tex_name = NULL, string *long_name = NULL); //! Declares a parameter - void declare_parameter(string *name, string *tex_name = NULL); + void declare_parameter(string *name, string *tex_name = NULL, string *long_name = NULL); //! Declares a statement local variable void declare_statement_local_variable(string *name); //! Completes a subsample statement diff --git a/SymbolTable.cc b/SymbolTable.cc index 102814a9..ae07a516 100644 --- a/SymbolTable.cc +++ b/SymbolTable.cc @@ -211,10 +211,12 @@ SymbolTable::writeOutput(ostream &output) const throw (NotYetFrozenException) { output << "M_.param_names = '" << getName(param_ids[0]) << "';" << endl; output << "M_.param_names_tex = '" << getTeXName(param_ids[0]) << "';" << endl; + output << "M_.param_names_long = '" << getLongName(param_ids[0]) << "';" << endl; for (int id = 1; id < param_nbr(); id++) { output << "M_.param_names = char(M_.param_names, '" << getName(param_ids[id]) << "');" << endl - << "M_.param_names_tex = char(M_.param_names_tex, '" << getTeXName(param_ids[id]) << "');" << endl; + << "M_.param_names_tex = char(M_.param_names_tex, '" << getTeXName(param_ids[id]) << "');" << endl + << "M_.param_names_long = char(M_.param_names_long, '" << getLongName(param_ids[id]) << "');" << endl; if (getName(param_ids[id]) == "dsge_prior_weight") output << "options_.dsge_var = 1;" << endl;