diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc index ddd707183..18d8c3d1f 100644 --- a/preprocessor/ComputingTasks.cc +++ b/preprocessor/ComputingTasks.cc @@ -138,9 +138,9 @@ SimulSparseStatement::writeOutput(ostream &output, const string &basename) const } } -StochSimulStatement::StochSimulStatement(const TmpSymbolTable &tmp_symbol_table_arg, +StochSimulStatement::StochSimulStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -160,13 +160,13 @@ void StochSimulStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "info = stoch_simul(var_list_);\n"; } -RamseyPolicyStatement::RamseyPolicyStatement(const TmpSymbolTable &tmp_symbol_table_arg, +RamseyPolicyStatement::RamseyPolicyStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -188,13 +188,13 @@ void RamseyPolicyStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "ramsey_policy(var_list_);\n"; } -EstimationStatement::EstimationStatement(const TmpSymbolTable &tmp_symbol_table_arg, +EstimationStatement::EstimationStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -214,13 +214,13 @@ void EstimationStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "dynare_estimation(var_list_);\n"; } -PriorAnalysisStatement::PriorAnalysisStatement(const TmpSymbolTable &tmp_symbol_table_arg, +PriorAnalysisStatement::PriorAnalysisStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -229,13 +229,13 @@ void PriorAnalysisStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "prior_analysis(var_list_);\n"; } -PosteriorAnalysisStatement::PosteriorAnalysisStatement(const TmpSymbolTable &tmp_symbol_table_arg, +PosteriorAnalysisStatement::PosteriorAnalysisStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -244,7 +244,7 @@ void PosteriorAnalysisStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "posterior_analysis(var_list_);\n"; } @@ -260,9 +260,9 @@ DynareSensitivityStatement::writeOutput(ostream &output, const string &basename) output << "dynare_sensitivity(options_gsa);" << endl; } -RplotStatement::RplotStatement(const TmpSymbolTable &tmp_symbol_table_arg, +RplotStatement::RplotStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -271,19 +271,19 @@ void RplotStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "rplot(var_list_);\n"; } -UnitRootVarsStatement::UnitRootVarsStatement(const TmpSymbolTable &tmp_symbol_table_arg) : - tmp_symbol_table(tmp_symbol_table_arg) +UnitRootVarsStatement::UnitRootVarsStatement(const SymbolList &symbol_list_arg) : + symbol_list(symbol_list_arg) { } void UnitRootVarsStatement::writeOutput(ostream &output, const string &basename) const { - tmp_symbol_table.writeOutput("options_.unit_root_vars", output); + symbol_list.writeOutput("options_.unit_root_vars", output); } PeriodsStatement::PeriodsStatement(int periods_arg) : periods(periods_arg) @@ -334,15 +334,15 @@ DsampleStatement::writeOutput(ostream &output, const string &basename) const output << "options_.dsample = [" << val1 << "; " << val2 << "];" << endl; } -VarobsStatement::VarobsStatement(const TmpSymbolTable &tmp_symbol_table_arg) : - tmp_symbol_table(tmp_symbol_table_arg) +VarobsStatement::VarobsStatement(const SymbolList &symbol_list_arg) : + symbol_list(symbol_list_arg) { } void VarobsStatement::writeOutput(ostream &output, const string &basename) const { - tmp_symbol_table.writeOutput("options_.varobs", output); + symbol_list.writeOutput("options_.varobs", output); } EstimatedParamsStatement::EstimatedParamsStatement(const vector &estim_params_list_arg, @@ -653,20 +653,20 @@ CalibStatement::writeOutput(ostream &output, const string &basename) const output << "M_.Sigma_e=calib(calib_var_index,calib_targets,calib_weights," << covar << ",Sigma_e_);\n"; } -OsrParamsStatement::OsrParamsStatement(const TmpSymbolTable &tmp_symbol_table_arg) : - tmp_symbol_table(tmp_symbol_table_arg) +OsrParamsStatement::OsrParamsStatement(const SymbolList &symbol_list_arg) : + symbol_list(symbol_list_arg) { } void OsrParamsStatement::writeOutput(ostream &output, const string &basename) const { - tmp_symbol_table.writeOutput("osr_params_", output); + symbol_list.writeOutput("osr_params_", output); } -OsrStatement::OsrStatement(const TmpSymbolTable &tmp_symbol_table_arg, +OsrStatement::OsrStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), options_list(options_list_arg) { } @@ -686,7 +686,7 @@ void OsrStatement::writeOutput(ostream &output, const string &basename) const { options_list.writeOutput(output); - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "osr(var_list_,osr_params_,obj_var_,optim_weights_);\n"; } @@ -733,9 +733,9 @@ OptimWeightsStatement::writeOutput(ostream &output, const string &basename) cons } } -DynaSaveStatement::DynaSaveStatement(const TmpSymbolTable &tmp_symbol_table_arg, +DynaSaveStatement::DynaSaveStatement(const SymbolList &symbol_list_arg, const string &filename_arg, const string &ext_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), filename(filename_arg), ext(ext_arg) { @@ -744,16 +744,16 @@ DynaSaveStatement::DynaSaveStatement(const TmpSymbolTable &tmp_symbol_table_arg, void DynaSaveStatement::writeOutput(ostream &output, const string &basename) const { - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "dynasave(" << filename; if (ext.size() > 0) output << "," << ext; output << ",var_list_);\n"; } -DynaTypeStatement::DynaTypeStatement(const TmpSymbolTable &tmp_symbol_table_arg, +DynaTypeStatement::DynaTypeStatement(const SymbolList &symbol_list_arg, const string &filename_arg, const string &ext_arg) : - tmp_symbol_table(tmp_symbol_table_arg), + symbol_list(symbol_list_arg), filename(filename_arg), ext(ext_arg) { @@ -762,7 +762,7 @@ DynaTypeStatement::DynaTypeStatement(const TmpSymbolTable &tmp_symbol_table_arg, void DynaTypeStatement::writeOutput(ostream &output, const string &basename) const { - tmp_symbol_table.writeOutput("var_list_", output); + symbol_list.writeOutput("var_list_", output); output << "dynatype(" << filename; if (ext.size() > 0) output << "," << ext; diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy index 1e97cd033..4be47323b 100644 --- a/preprocessor/DynareBison.yy +++ b/preprocessor/DynareBison.yy @@ -665,17 +665,11 @@ stoch_simul_options : o_dr_algo ; tmp_var_list : tmp_var_list NAME - { driver.add_tmp_var($2); } - | tmp_var_list NAME EQUAL NAME - { driver.add_tmp_var($2, $4); } + { driver.add_in_symbol_list($2); } | tmp_var_list COMMA NAME - { driver.add_tmp_var($3); } - | tmp_var_list COMMA NAME EQUAL NAME - { driver.add_tmp_var($3, $5); } + { driver.add_in_symbol_list($3); } | NAME - { driver.add_tmp_var($1); } - | NAME EQUAL NAME - { driver.add_tmp_var($1, $3); } + { driver.add_in_symbol_list($1); } ; signed_integer : PLUS INT_NUMBER @@ -1375,12 +1369,12 @@ o_gsa_threshold_redform : THRESHOLD_REDFORM EQUAL vec_int { driver.option_num("t o_gsa_ksstat_redform : KSSTAT_REDFORM EQUAL number { driver.option_num("ksstat_redfrom", $3); }; o_gsa_alpha2_redform : ALPHA2_REDFORM EQUAL number { driver.option_num("alpha2_redform", $3); }; -o_gsa_namendo : NAMENDO EQUAL '(' tmp_var_list ')' { driver.option_str_lst("namendo"); }; -o_gsa_namlagendo : NAMLAGENDO EQUAL '(' tmp_var_list ')' { driver.option_str_lst("namlagendo"); }; -o_gsa_namexo : NAMEXO EQUAL '(' tmp_var_list ')' { driver.option_str_lst("namexo"); }; +o_gsa_namendo : NAMENDO EQUAL '(' tmp_var_list ')' { driver.option_symbol_list("namendo"); }; +o_gsa_namlagendo : NAMLAGENDO EQUAL '(' tmp_var_list ')' { driver.option_symbol_list("namlagendo"); }; +o_gsa_namexo : NAMEXO EQUAL '(' tmp_var_list ')' { driver.option_symbol_list("namexo"); }; o_gsa_rmse : RMSE EQUAL INT_NUMBER { driver.option_num("rmse", $3); }; o_gsa_lik_only : LIK_ONLY EQUAL INT_NUMBER { driver.option_num("lik_only", $3); }; -o_gsa_var_rmse : VAR_RMSE EQUAL '(' tmp_var_list ')' { driver.option_str_lst("var_rmse"); }; +o_gsa_var_rmse : VAR_RMSE EQUAL '(' tmp_var_list ')' { driver.option_symbol_list("var_rmse"); }; o_gsa_pfilt_rmse : PFILT_RMSE EQUAL number { driver.option_num("pfilt_rmse", $3); }; o_gsa_istart_rmse : ISTART_RMSE EQUAL INT_NUMBER { driver.option_num("istart_rmse", $3); }; o_gsa_alpha_rmse : ALPHA_RMSE EQUAL number { driver.option_num("alpha_rmse", $3); }; diff --git a/preprocessor/Makefile b/preprocessor/Makefile index 80a27f3b7..a71440f55 100644 --- a/preprocessor/Makefile +++ b/preprocessor/Makefile @@ -23,7 +23,7 @@ COMMON_OBJ = \ Shocks.o \ SigmaeInitialization.o \ SymbolTable.o \ - TmpSymbolTable.o \ + SymbolList.o \ VariableTable.o \ ParsingDriver.o \ DataTree.o \ diff --git a/preprocessor/ParsingDriver.cc b/preprocessor/ParsingDriver.cc index 6730e1a8d..9392d04c3 100644 --- a/preprocessor/ParsingDriver.cc +++ b/preprocessor/ParsingDriver.cc @@ -65,7 +65,7 @@ ParsingDriver::parse(istream &in, bool debug) { mod_file = new ModFile(); - tmp_symbol_table = new TmpSymbolTable(mod_file->symbol_table); + symbol_list.clear(); reset_data_tree(); @@ -77,7 +77,6 @@ ParsingDriver::parse(istream &in, bool debug) parser.parse(); delete lexer; - delete tmp_symbol_table; return mod_file; } @@ -655,19 +654,16 @@ ParsingDriver::option_str(const string &name_option, const string &opt) } void -ParsingDriver::option_str_lst(const string &name_option) +ParsingDriver::option_symbol_list(const string &name_option) { - if (options_list.string_list_options.find(name_option) - != options_list.string_list_options.end()) + if (options_list.symbol_list_options.find(name_option) + != options_list.symbol_list_options.end()) error("option " + name_option + " declared twice"); - options_list.string_list_options[name_option] = new TmpSymbolTable::TmpSymbolTable(*tmp_symbol_table); - tmp_symbol_table->clear(); + options_list.symbol_list_options[name_option] = symbol_list; + symbol_list.clear(); } - - - void ParsingDriver::linear() { @@ -675,34 +671,24 @@ ParsingDriver::linear() } void -ParsingDriver::add_tmp_var(string *tmp_var1, string *tmp_var2) -{ - check_symbol_existence(*tmp_var1); - check_symbol_existence(*tmp_var2); - tmp_symbol_table->AddTempSymbol(*tmp_var1, *tmp_var2); - delete tmp_var1; - delete tmp_var2; -} - -void -ParsingDriver::add_tmp_var(string *tmp_var) +ParsingDriver::add_in_symbol_list(string *tmp_var) { check_symbol_existence(*tmp_var); - tmp_symbol_table->AddTempSymbol(*tmp_var); + symbol_list.addSymbol(*tmp_var); delete tmp_var; } void ParsingDriver::rplot() { - mod_file->addStatement(new RplotStatement(*tmp_symbol_table, options_list)); + mod_file->addStatement(new RplotStatement(symbol_list, options_list)); options_list.clear(); - tmp_symbol_table->clear(); + symbol_list.clear(); } void ParsingDriver::stoch_simul() { - mod_file->addStatement(new StochSimulStatement(*tmp_symbol_table, options_list)); - tmp_symbol_table->clear(); + mod_file->addStatement(new StochSimulStatement(symbol_list, options_list)); + symbol_list.clear(); options_list.clear(); } @@ -776,31 +762,31 @@ ParsingDriver::estimated_params_bounds() void ParsingDriver::set_unit_root_vars() { - mod_file->addStatement(new UnitRootVarsStatement(*tmp_symbol_table)); - tmp_symbol_table->clear(); + mod_file->addStatement(new UnitRootVarsStatement(symbol_list)); + symbol_list.clear(); } void ParsingDriver::run_estimation() { - mod_file->addStatement(new EstimationStatement(*tmp_symbol_table, options_list)); - tmp_symbol_table->clear(); + mod_file->addStatement(new EstimationStatement(symbol_list, options_list)); + symbol_list.clear(); options_list.clear(); } void ParsingDriver::run_prior_analysis() { - mod_file->addStatement(new PriorAnalysisStatement(*tmp_symbol_table, options_list)); - tmp_symbol_table->clear(); + mod_file->addStatement(new PriorAnalysisStatement(symbol_list, options_list)); + symbol_list.clear(); options_list.clear(); } void ParsingDriver::run_posterior_analysis() { - mod_file->addStatement(new PosteriorAnalysisStatement(*tmp_symbol_table, options_list)); - tmp_symbol_table->clear(); + mod_file->addStatement(new PosteriorAnalysisStatement(symbol_list, options_list)); + symbol_list.clear(); options_list.clear(); } @@ -842,8 +828,8 @@ ParsingDriver::optim_options_num(string *name, string *value) void ParsingDriver::set_varobs() { - mod_file->addStatement(new VarobsStatement(*tmp_symbol_table)); - tmp_symbol_table->clear(); + mod_file->addStatement(new VarobsStatement(symbol_list)); + symbol_list.clear(); } void @@ -908,15 +894,15 @@ ParsingDriver::optim_weights() void ParsingDriver::set_osr_params() { - mod_file->addStatement(new OsrParamsStatement(*tmp_symbol_table)); - tmp_symbol_table->clear(); + mod_file->addStatement(new OsrParamsStatement(symbol_list)); + symbol_list.clear(); } void ParsingDriver::run_osr() { - mod_file->addStatement(new OsrStatement(*tmp_symbol_table, options_list)); - tmp_symbol_table->clear(); + mod_file->addStatement(new OsrStatement(symbol_list, options_list)); + symbol_list.clear(); options_list.clear(); } @@ -1002,8 +988,8 @@ ParsingDriver::run_calib(int covar) void ParsingDriver::run_dynatype(string *filename, string *ext) { - mod_file->addStatement(new DynaTypeStatement(*tmp_symbol_table, *filename, *ext)); - tmp_symbol_table->clear(); + mod_file->addStatement(new DynaTypeStatement(symbol_list, *filename, *ext)); + symbol_list.clear(); delete filename; delete ext; } @@ -1011,8 +997,8 @@ ParsingDriver::run_dynatype(string *filename, string *ext) void ParsingDriver::run_dynasave(string *filename, string *ext) { - mod_file->addStatement(new DynaSaveStatement(*tmp_symbol_table, *filename, *ext)); - tmp_symbol_table->clear(); + mod_file->addStatement(new DynaSaveStatement(symbol_list, *filename, *ext)); + symbol_list.clear(); delete filename; delete ext; } @@ -1056,8 +1042,8 @@ ParsingDriver::end_planner_objective(NodeID expr) void ParsingDriver::ramsey_policy() { - mod_file->addStatement(new RamseyPolicyStatement(*tmp_symbol_table, options_list)); - tmp_symbol_table->clear(); + mod_file->addStatement(new RamseyPolicyStatement(symbol_list, options_list)); + symbol_list.clear(); options_list.clear(); } diff --git a/preprocessor/Statement.cc b/preprocessor/Statement.cc index 2297e6142..8d385e658 100644 --- a/preprocessor/Statement.cc +++ b/preprocessor/Statement.cc @@ -68,9 +68,9 @@ OptionsList::writeOutput(ostream &output) const it != string_options.end(); it++) output << "options_." << it->first << " = '" << it->second << "';" << endl; - for(string_list_options_type::const_iterator it = string_list_options.begin(); - it != string_list_options.end(); it++) - it->second->writeOutput("options_."+it->first,output); + for(symbol_list_options_type::const_iterator it = symbol_list_options.begin(); + it != symbol_list_options.end(); it++) + it->second.writeOutput("options_." + it->first, output); } void @@ -91,9 +91,9 @@ OptionsList::writeOutput(ostream &output, const string &option_group) const it != string_options.end(); it++) output << option_group << "." << it->first << " = '" << it->second << "';" << endl; - for(string_list_options_type::const_iterator it = string_list_options.begin(); - it != string_list_options.end(); it++) - it->second->writeOutput(option_group+"."+it->first,output); + for(symbol_list_options_type::const_iterator it = symbol_list_options.begin(); + it != symbol_list_options.end(); it++) + it->second.writeOutput(option_group + "." + it->first, output); } void @@ -102,4 +102,5 @@ OptionsList::clear() num_options.clear(); paired_num_options.clear(); string_options.clear(); + symbol_list_options.clear(); } diff --git a/preprocessor/SymbolList.cc b/preprocessor/SymbolList.cc new file mode 100644 index 000000000..953891442 --- /dev/null +++ b/preprocessor/SymbolList.cc @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2003-2008 Dynare Team + * + * This file is part of Dynare. + * + * Dynare is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Dynare is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Dynare. If not, see . + */ + +#include "SymbolList.hh" +#include "Interface.hh" + +void +SymbolList::addSymbol(const string &symbol) +{ + symbols.push_back(symbol); +} + +void +SymbolList::writeOutput(const string &varname, ostream &output) const +{ + output << varname << "=[];" << endl; + for (vector::const_iterator it = symbols.begin(); + it != symbols.end(); it++) + { + output << varname << " = " + << interfaces::strvcat(varname, "'" + *it + "'") << ";" << endl; + } +} + +void +SymbolList::clear() +{ + symbols.clear(); +} diff --git a/preprocessor/TmpSymbolTable.cc b/preprocessor/TmpSymbolTable.cc deleted file mode 100644 index 396ce8a9f..000000000 --- a/preprocessor/TmpSymbolTable.cc +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2003-2008 Dynare Team - * - * This file is part of Dynare. - * - * Dynare is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Dynare is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Dynare. If not, see . - */ - -using namespace std; - -#include "SymbolTable.hh" -#include "TmpSymbolTable.hh" -#include "Interface.hh" - -TmpSymbolTable::TmpSymbolTable(const SymbolTable &symbol_table_arg) : - symbol_table(symbol_table_arg) -{ -} - -TmpSymbolTable::~TmpSymbolTable() -{ -} - -void -TmpSymbolTable::AddTempSymbol(const string &symbol) -{ - // FIXME: add check to verify that symbol exists in symbol_table - // FIXME: add check to verify that symbol doesn't yet exist in the present table - tmpsymboltable.push_back(symbol); -} - -void -TmpSymbolTable::AddTempSymbol(const string &symbol1, const string &symbol2) -{ - // FIXME: add checks to verify that symbol1 and symbol2 exist in symbol_table - // FIXME: add check to verify that symbol1 doesn't yet exist in the present table - tmpsymboltable.push_back(symbol1); - nameTable.push_back(symbol2); -} - -void -TmpSymbolTable::writeOutput(const string &varname, ostream &output) const -{ - output << varname << "=[];" << endl; - for (vector::const_iterator it = tmpsymboltable.begin(); - it != tmpsymboltable.end(); it++) - { - output << varname << " = "; - output << interfaces::strvcat(varname, "'" + *it + "'") << ";" << endl; - } -} - -void -TmpSymbolTable::clear() -{ - tmpsymboltable.clear(); - nameTable.clear(); -} diff --git a/preprocessor/include/ComputingTasks.hh b/preprocessor/include/ComputingTasks.hh index 66cbfdcdc..55b0c3b62 100644 --- a/preprocessor/include/ComputingTasks.hh +++ b/preprocessor/include/ComputingTasks.hh @@ -22,7 +22,7 @@ #include -#include "TmpSymbolTable.hh" +#include "SymbolList.hh" #include "SymbolTable.hh" #include "Statement.hh" #include "ModelTree.hh" @@ -79,10 +79,10 @@ public: class StochSimulStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - StochSimulStatement(const TmpSymbolTable &tmp_symbol_table_arg, + StochSimulStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void checkPass(ModFileStructure &mod_file_struct); virtual void writeOutput(ostream &output, const string &basename) const; @@ -91,10 +91,10 @@ public: class RamseyPolicyStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - RamseyPolicyStatement(const TmpSymbolTable &tmp_symbol_table_arg, + RamseyPolicyStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void checkPass(ModFileStructure &mod_file_struct); virtual void writeOutput(ostream &output, const string &basename) const; @@ -103,10 +103,10 @@ public: class RplotStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - RplotStatement(const TmpSymbolTable &tmp_symbol_table_arg, + RplotStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; @@ -114,9 +114,9 @@ public: class UnitRootVarsStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; public: - UnitRootVarsStatement(const TmpSymbolTable &tmp_symbol_table_arg); + UnitRootVarsStatement(const SymbolList &symbol_list_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; @@ -160,10 +160,10 @@ public: class EstimationStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - EstimationStatement(const TmpSymbolTable &tmp_symbol_table_arg, + EstimationStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void checkPass(ModFileStructure &mod_file_struct); virtual void writeOutput(ostream &output, const string &basename) const; @@ -172,10 +172,10 @@ public: class PriorAnalysisStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - PriorAnalysisStatement(const TmpSymbolTable &tmp_symbol_table_arg, + PriorAnalysisStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; @@ -183,10 +183,10 @@ public: class PosteriorAnalysisStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - PosteriorAnalysisStatement(const TmpSymbolTable &tmp_symbol_table_arg, + PosteriorAnalysisStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; @@ -203,9 +203,9 @@ public: class VarobsStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; public: - VarobsStatement(const TmpSymbolTable &tmp_symbol_table_arg); + VarobsStatement(const SymbolList &symbol_list_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; @@ -225,19 +225,19 @@ public: class OsrParamsStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; public: - OsrParamsStatement(const TmpSymbolTable &tmp_symbol_table_arg); + OsrParamsStatement(const SymbolList &symbol_list_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; class OsrStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const OptionsList options_list; public: - OsrStatement(const TmpSymbolTable &tmp_symbol_table_arg, + OsrStatement(const SymbolList &symbol_list_arg, const OptionsList &options_list_arg); virtual void checkPass(ModFileStructure &mod_file_struct); virtual void writeOutput(ostream &output, const string &basename) const; @@ -246,11 +246,11 @@ public: class DynaTypeStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const string filename; const string ext; public: - DynaTypeStatement(const TmpSymbolTable &tmp_symbol_table_arg, + DynaTypeStatement(const SymbolList &symbol_list_arg, const string &filename_arg, const string &ext_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; @@ -258,11 +258,11 @@ public: class DynaSaveStatement : public Statement { private: - const TmpSymbolTable tmp_symbol_table; + const SymbolList symbol_list; const string filename; const string ext; public: - DynaSaveStatement(const TmpSymbolTable &tmp_symbol_table_arg, + DynaSaveStatement(const SymbolList &symbol_list_arg, const string &filename_arg, const string &ext_arg); virtual void writeOutput(ostream &output, const string &basename) const; }; diff --git a/preprocessor/include/ParsingDriver.hh b/preprocessor/include/ParsingDriver.hh index dca90dc0e..cdafc1d4f 100644 --- a/preprocessor/include/ParsingDriver.hh +++ b/preprocessor/include/ParsingDriver.hh @@ -29,7 +29,7 @@ #include #include "ModFile.hh" -#include "TmpSymbolTable.hh" +#include "SymbolList.hh" #include "DynareBison.hh" #include "ComputingTasks.hh" #include "Shocks.hh" @@ -76,7 +76,7 @@ private: void optim_options_helper(const string &name); //! Stores temporary symbol table - TmpSymbolTable *tmp_symbol_table; + SymbolList symbol_list; //! The data tree in which to add expressions currently parsed DataTree *data_tree; @@ -264,14 +264,12 @@ public: void option_str(const string &name_option, string *opt); //! Sets an option to a string value void option_str(const string &name_option, const string &opt); - //! Sets an option to a list of strings - void option_str_lst(const string &name_option); + //! Sets an option to a list of symbols (used in conjunction with add_in_symbol_list()) + void option_symbol_list(const string &name_option); //! Indicates that the model is linear void linear(); - //! Adds a variable to temp symbol table and sets its value - void add_tmp_var(string *tmp_var1, string *tmp_var2); - //! Adds a variable to temp symbol table - void add_tmp_var(string *tmp_var); + //! Adds a variable to temporary symbol list + void add_in_symbol_list(string *tmp_var); //! Writes a rplot() command void rplot(); //! Writes a stock_simul command diff --git a/preprocessor/include/Statement.hh b/preprocessor/include/Statement.hh index a05733c7d..41cf774e5 100644 --- a/preprocessor/include/Statement.hh +++ b/preprocessor/include/Statement.hh @@ -26,7 +26,8 @@ using namespace std; #include #include -#include "TmpSymbolTable.hh" +#include "SymbolList.hh" + class ModFileStructure { public: @@ -72,11 +73,11 @@ public: typedef map num_options_type; typedef map > paired_num_options_type; typedef map string_options_type; - typedef map string_list_options_type; + typedef map symbol_list_options_type; num_options_type num_options; paired_num_options_type paired_num_options; string_options_type string_options; - string_list_options_type string_list_options; + symbol_list_options_type symbol_list_options; void writeOutput(ostream &output) const; void writeOutput(ostream &output, const string &option_group) const; void clear(); diff --git a/preprocessor/include/SymbolList.hh b/preprocessor/include/SymbolList.hh new file mode 100644 index 000000000..e1ec9fac8 --- /dev/null +++ b/preprocessor/include/SymbolList.hh @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2003-2008 Dynare Team + * + * This file is part of Dynare. + * + * Dynare is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Dynare is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Dynare. If not, see . + */ + +#ifndef _SYMBOL_LIST_HH +#define _SYMBOL_LIST_HH + +using namespace std; + +#include +#include +#include + +//! Used to store a list of symbols +/*! This class is no more than a vector, with a pretty-printer for Matlab */ +class SymbolList +{ +private: + //! Internal container for symbol list + vector symbols; +public: + //! Adds a symbol to the list + void addSymbol(const string &symbol); + //! Output content in Matlab format + /*! Creates a string array for Matlab, stored in variable "varname" */ + void writeOutput(const string &varname, ostream &output) const; + //! Clears all content + void clear(); +}; + +#endif diff --git a/preprocessor/include/TmpSymbolTable.hh b/preprocessor/include/TmpSymbolTable.hh deleted file mode 100644 index e7027994f..000000000 --- a/preprocessor/include/TmpSymbolTable.hh +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2003-2008 Dynare Team - * - * This file is part of Dynare. - * - * Dynare is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Dynare is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Dynare. If not, see . - */ - -#ifndef _TMPSYMBOLTABLE_HH -#define _TMPSYMBOLTABLE_HH - -#include -#include -#include - -#include "SymbolTable.hh" - -/*! - \class TmpSymbolTable - \brief Defines temparary symbol table used with computing tasks -*/ -class TmpSymbolTable -{ -private : - /*! list of string TempSymbolTable */ - std::vector tmpsymboltable; - /*! List of symbol Values */ - std::vector nameTable; - //! A reference to enclosing symbol table - const SymbolTable &symbol_table; -public : - /*! Constrcutor */ - TmpSymbolTable(const SymbolTable &symbol_table_arg); - /*! Destructor*/ - ~TmpSymbolTable(); - /*! Adds a temp symbol */ - void AddTempSymbol(const std::string &symbol); - /*! Adds a temp symbol and its value */ - void AddTempSymbol(const std::string &symbol1, const std::string &symbol2); - /*! Write TempSymbolTable to output string */ - void writeOutput(const std::string &varname, std::ostream &output) const; - //! Clears all content - void clear(); -}; -//------------------------------------------------------------------------------ -#endif