Refactor parsing of symbol lists
For symbol lists (such as those given to “var” or “stoch_simul”), return a semantic value at the Bison level, rather than building the list through a temporary object in ParsingDriver. This allows various simplifications, and leads to a more functional code. By the way, homogeneize the naming of the various flavours of symbol lists in the Bison file (with TeX names, partitioning, or with a wildcard).fix-tolerance-parameters
parent
7fff8b3406
commit
46cc47266b
|
@ -333,10 +333,11 @@ PriorPosteriorFunctionStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
StochSimulStatement::StochSimulStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
StochSimulStatement::StochSimulStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -373,11 +374,9 @@ StochSimulStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
|
|||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
symbol_list.removeDuplicates("stoch_simul", warnings);
|
||||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -418,10 +417,11 @@ StochSimulStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
ForecastStatement::ForecastStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
ForecastStatement::ForecastStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -430,7 +430,7 @@ ForecastStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolida
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -620,9 +620,11 @@ RamseyConstraintsStatement::writeJsonOutput(ostream &output) const
|
|||
}
|
||||
|
||||
RamseyPolicyStatement::RamseyPolicyStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -668,7 +670,7 @@ RamseyPolicyStatement::checkPass(ModFileStructure &mod_file_struct, WarningConso
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -733,9 +735,11 @@ EvaluatePlannerObjectiveStatement::writeJsonOutput(ostream &output) const
|
|||
}
|
||||
|
||||
DiscretionaryPolicyStatement::DiscretionaryPolicyStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -783,7 +787,7 @@ DiscretionaryPolicyStatement::checkPass(ModFileStructure &mod_file_struct, Warni
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -1042,7 +1046,7 @@ EstimationStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -1145,8 +1149,10 @@ DynareSensitivityStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
RplotStatement::RplotStatement(SymbolList symbol_list_arg) :
|
||||
symbol_list{move(symbol_list_arg)}
|
||||
RplotStatement::RplotStatement(SymbolList symbol_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1155,7 +1161,7 @@ RplotStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidatio
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::exogenous});
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::exogenous}, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -2024,7 +2030,7 @@ OsrParamsStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolid
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::parameter });
|
||||
symbol_list.checkPass(warnings, { SymbolType::parameter }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -2040,7 +2046,7 @@ OsrParamsStatement::writeOutput(ostream &output, const string &basename, bool mi
|
|||
output << "M_.osr.param_names = cellstr(M_.osr.param_names);" << endl
|
||||
<< "M_.osr.param_indices = zeros(length(M_.osr.param_names), 1);" << endl;
|
||||
int i = 0;
|
||||
vector<string> symbols = symbol_list.get_symbols();
|
||||
vector<string> symbols = symbol_list.getSymbols();
|
||||
for (auto &symbol : symbols)
|
||||
output << "M_.osr.param_indices(" << ++i <<") = " << symbol_table.getTypeSpecificID(symbol) + 1 << ";" << endl;
|
||||
}
|
||||
|
@ -2109,10 +2115,11 @@ OsrParamsBoundsStatement::writeJsonOutput(ostream &output) const
|
|||
<< "}";
|
||||
}
|
||||
|
||||
OsrStatement::OsrStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OsrStatement::OsrStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -2139,7 +2146,7 @@ OsrStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -2253,10 +2260,11 @@ OptimWeightsStatement::writeJsonOutput(ostream &output) const
|
|||
<< "}";
|
||||
}
|
||||
|
||||
DynaSaveStatement::DynaSaveStatement(SymbolList symbol_list_arg,
|
||||
string filename_arg) :
|
||||
DynaSaveStatement::DynaSaveStatement(SymbolList symbol_list_arg, string filename_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
filename{move(filename_arg)}
|
||||
filename{move(filename_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -2265,7 +2273,7 @@ DynaSaveStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolida
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::exogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::exogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -2295,10 +2303,11 @@ DynaSaveStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
DynaTypeStatement::DynaTypeStatement(SymbolList symbol_list_arg,
|
||||
string filename_arg) :
|
||||
DynaTypeStatement::DynaTypeStatement(SymbolList symbol_list_arg, string filename_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list(move(symbol_list_arg)),
|
||||
filename(move(filename_arg))
|
||||
filename(move(filename_arg)),
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -2307,7 +2316,7 @@ DynaTypeStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolida
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::exogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::exogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -2687,10 +2696,11 @@ MSSBVARComputeProbabilitiesStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
MSSBVARIrfStatement::MSSBVARIrfStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
MSSBVARIrfStatement::MSSBVARIrfStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -2714,7 +2724,7 @@ MSSBVARIrfStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsoli
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -2976,9 +2986,11 @@ WriteLatexSteadyStateModelStatement::writeJsonOutput(ostream &output) const
|
|||
}
|
||||
|
||||
ShockDecompositionStatement::ShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -2991,7 +3003,7 @@ ShockDecompositionStatement::checkPass(ModFileStructure &mod_file_struct, Warnin
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -3026,9 +3038,11 @@ ShockDecompositionStatement::writeJsonOutput(ostream &output) const
|
|||
}
|
||||
|
||||
RealtimeShockDecompositionStatement::RealtimeShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -3041,7 +3055,7 @@ RealtimeShockDecompositionStatement::checkPass(ModFileStructure &mod_file_struct
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -3076,9 +3090,11 @@ RealtimeShockDecompositionStatement::writeJsonOutput(ostream &output) const
|
|||
}
|
||||
|
||||
PlotShockDecompositionStatement::PlotShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -3087,7 +3103,7 @@ PlotShockDecompositionStatement::checkPass(ModFileStructure &mod_file_struct, Wa
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::epilogue });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous, SymbolType::epilogue }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -3123,9 +3139,11 @@ PlotShockDecompositionStatement::writeJsonOutput(ostream &output) const
|
|||
}
|
||||
|
||||
InitialConditionDecompositionStatement::InitialConditionDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg) :
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)}
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -3138,7 +3156,7 @@ InitialConditionDecompositionStatement::checkPass(ModFileStructure &mod_file_str
|
|||
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -3173,8 +3191,10 @@ InitialConditionDecompositionStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
SqueezeShockDecompositionStatement::SqueezeShockDecompositionStatement(SymbolList symbol_list_arg)
|
||||
: symbol_list{move(symbol_list_arg)}
|
||||
SqueezeShockDecompositionStatement::SqueezeShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -3184,7 +3204,7 @@ SqueezeShockDecompositionStatement::checkPass(ModFileStructure &mod_file_struct,
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -3251,9 +3271,12 @@ ConditionalForecastStatement::writeJsonOutput(ostream &output) const
|
|||
output << "}";
|
||||
}
|
||||
|
||||
PlotConditionalForecastStatement::PlotConditionalForecastStatement(int periods_arg, SymbolList symbol_list_arg) :
|
||||
PlotConditionalForecastStatement::PlotConditionalForecastStatement(int periods_arg,
|
||||
SymbolList symbol_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
periods{periods_arg},
|
||||
symbol_list{move(symbol_list_arg)}
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -3263,7 +3286,7 @@ PlotConditionalForecastStatement::checkPass(ModFileStructure &mod_file_struct,
|
|||
{
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
@ -4826,8 +4849,11 @@ OptionsEqualStatement::writeOutput(ostream &output, const string &basename, bool
|
|||
}
|
||||
|
||||
CalibSmootherStatement::CalibSmootherStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg)
|
||||
: symbol_list{move(symbol_list_arg)}, options_list{move(options_list_arg)}
|
||||
OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg) :
|
||||
symbol_list{move(symbol_list_arg)},
|
||||
options_list{move(options_list_arg)},
|
||||
symbol_table{symbol_table_arg}
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -4837,7 +4863,7 @@ CalibSmootherStatement::checkPass(ModFileStructure &mod_file_struct, WarningCons
|
|||
mod_file_struct.calib_smoother_present = true;
|
||||
try
|
||||
{
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous });
|
||||
symbol_list.checkPass(warnings, { SymbolType::endogenous }, symbol_table);
|
||||
}
|
||||
catch (SymbolList::SymbolListException &e)
|
||||
{
|
||||
|
|
|
@ -130,11 +130,12 @@ public:
|
|||
class StochSimulStatement : public Statement
|
||||
{
|
||||
private:
|
||||
SymbolList symbol_list;
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
StochSimulStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
StochSimulStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -145,9 +146,10 @@ class ForecastStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
ForecastStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
ForecastStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -189,9 +191,10 @@ class RamseyPolicyStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
RamseyPolicyStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
RamseyPolicyStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -254,9 +257,10 @@ class DiscretionaryPolicyStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
DiscretionaryPolicyStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
DiscretionaryPolicyStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -266,8 +270,9 @@ class RplotStatement : public Statement
|
|||
{
|
||||
private:
|
||||
const SymbolList symbol_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
explicit RplotStatement(SymbolList symbol_list_arg);
|
||||
RplotStatement(SymbolList symbol_list_arg, const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -386,9 +391,10 @@ class OsrStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
OsrStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
OsrStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -426,9 +432,10 @@ class DynaTypeStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const string filename;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
DynaTypeStatement(SymbolList symbol_list_arg,
|
||||
string filename_arg);
|
||||
DynaTypeStatement(SymbolList symbol_list_arg, string filename_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -439,9 +446,10 @@ class DynaSaveStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const string filename;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
DynaSaveStatement(SymbolList symbol_list_arg,
|
||||
string filename_arg);
|
||||
DynaSaveStatement(SymbolList symbol_list_arg, string filename_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -671,9 +679,10 @@ class MSSBVARIrfStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
MSSBVARIrfStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
MSSBVARIrfStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -761,9 +770,10 @@ class ShockDecompositionStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
ShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
ShockDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -774,9 +784,10 @@ class RealtimeShockDecompositionStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
RealtimeShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
RealtimeShockDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -787,9 +798,10 @@ class PlotShockDecompositionStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
PlotShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
PlotShockDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -800,9 +812,10 @@ class InitialConditionDecompositionStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
InitialConditionDecompositionStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
InitialConditionDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -812,8 +825,10 @@ class SqueezeShockDecompositionStatement : public Statement
|
|||
{
|
||||
private:
|
||||
const SymbolList symbol_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
explicit SqueezeShockDecompositionStatement(SymbolList symbol_list_arg);
|
||||
SqueezeShockDecompositionStatement(SymbolList symbol_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -836,8 +851,10 @@ private:
|
|||
//! A value of -1 indicates that the user didn't specify a value
|
||||
const int periods;
|
||||
const SymbolList symbol_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
PlotConditionalForecastStatement(int periods_arg, SymbolList symbol_list_arg);
|
||||
PlotConditionalForecastStatement(int periods_arg, SymbolList symbol_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
@ -848,9 +865,10 @@ class CalibSmootherStatement : public Statement
|
|||
private:
|
||||
const SymbolList symbol_list;
|
||||
const OptionsList options_list;
|
||||
const SymbolTable &symbol_table;
|
||||
public:
|
||||
CalibSmootherStatement(SymbolList symbol_list_arg,
|
||||
OptionsList options_list_arg);
|
||||
CalibSmootherStatement(SymbolList symbol_list_arg, OptionsList options_list_arg,
|
||||
const SymbolTable &symbol_table_arg);
|
||||
void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override;
|
||||
void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override;
|
||||
void writeJsonOutput(ostream &output) const override;
|
||||
|
|
|
@ -203,12 +203,12 @@ class ParsingDriver;
|
|||
%type <string> name_value_pair_with_suboptions name_value_pair_with_suboptions_list
|
||||
%type <SymbolType> change_type_arg
|
||||
%type <vector<string>> vec_str vec_str_1
|
||||
%type <vector<string>> change_type_var_list
|
||||
%type <vector<string>> symbol_list symbol_list_or_wildcard
|
||||
%type <vector<int>> vec_int_elem vec_int_1 vec_int vec_int_number
|
||||
%type <PriorDistributions> prior_pdf prior_distribution
|
||||
%type <pair<expr_t,expr_t>> calibration_range
|
||||
%type <pair<string,string>> named_var_elem subsamples_eq_opt integer_range_w_inf
|
||||
%type <vector<pair<string,string>>> named_var named_var_1 tag_pair_list_for_selection
|
||||
%type <pair<string,string>> partition_elem subsamples_eq_opt integer_range_w_inf
|
||||
%type <vector<pair<string,string>>> partition partition_1 tag_pair_list_for_selection symbol_list_with_tex
|
||||
%type <tuple<string,string,string,string>> prior_eq_opt options_eq_opt
|
||||
%type <vector<pair<int, int>>> period_list
|
||||
%type <vector<expr_t>> matched_moments_list value_list
|
||||
|
@ -217,6 +217,7 @@ class ParsingDriver;
|
|||
%type <map<string, expr_t>> occbin_constraints_regime_options_list
|
||||
%type <pair<string, expr_t>> occbin_constraints_regime_option
|
||||
%type <PacTargetKind> pac_target_kind
|
||||
%type <vector<tuple<string, string, vector<pair<string, string>>>>> symbol_list_with_tex_and_partition
|
||||
%%
|
||||
|
||||
%start statement_list;
|
||||
|
@ -361,52 +362,143 @@ dsample : DSAMPLE INT_NUMBER ';'
|
|||
{ driver.dsample($2, $3); }
|
||||
;
|
||||
|
||||
rplot : RPLOT symbol_list ';' { driver.rplot(); };
|
||||
symbol_list : symbol_list symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($2);
|
||||
}
|
||||
| symbol_list COMMA symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($3);
|
||||
}
|
||||
| symbol
|
||||
{ $$ = { $1 }; }
|
||||
;
|
||||
|
||||
trend_var : TREND_VAR '(' GROWTH_FACTOR EQUAL { driver.begin_trend(); } hand_side ')' trend_var_list ';'
|
||||
{ driver.end_trend_var($6); }
|
||||
symbol_list_or_wildcard : symbol_list
|
||||
| ':'
|
||||
{ $$ = { ":" }; }
|
||||
;
|
||||
|
||||
symbol_list_with_tex : symbol_list_with_tex symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($2, "");
|
||||
}
|
||||
| symbol_list_with_tex COMMA symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($3, "");
|
||||
}
|
||||
| symbol
|
||||
{ $$ = { { $1, "" }}; }
|
||||
| symbol_list_with_tex symbol TEX_NAME
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($2, $3);
|
||||
}
|
||||
| symbol_list_with_tex COMMA symbol TEX_NAME
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($3, $4);
|
||||
}
|
||||
| symbol TEX_NAME
|
||||
{ $$ = { { $1, $2 } }; }
|
||||
;
|
||||
|
||||
partition_elem : symbol EQUAL QUOTED_STRING
|
||||
{ $$ = { $1, $3 }; }
|
||||
|
||||
partition_1 : '(' partition_elem
|
||||
{ $$ = { $2 }; }
|
||||
| '(' COMMA partition_elem
|
||||
{ $$ = { $3 }; }
|
||||
| partition_1 partition_elem
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($2);
|
||||
}
|
||||
| partition_1 COMMA partition_elem
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($3);
|
||||
}
|
||||
;
|
||||
|
||||
partition : partition_1 ')'
|
||||
| partition_1 COMMA ')'
|
||||
;
|
||||
|
||||
trend_var_list : trend_var_list symbol
|
||||
{ driver.declare_trend_var(false, $2); }
|
||||
| trend_var_list COMMA symbol
|
||||
{ driver.declare_trend_var(false, $3); }
|
||||
| symbol
|
||||
{ driver.declare_trend_var(false, $1); }
|
||||
| trend_var_list symbol TEX_NAME
|
||||
{ driver.declare_trend_var(false, $2, $3); }
|
||||
| trend_var_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_trend_var(false, $3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_trend_var(false, $1, $2); }
|
||||
;
|
||||
symbol_list_with_tex_and_partition : symbol_list_with_tex_and_partition symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($2, "", vector<pair<string,string>>{});
|
||||
}
|
||||
| symbol_list_with_tex_and_partition COMMA symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($3, "", vector<pair<string,string>>{});
|
||||
}
|
||||
| symbol
|
||||
{ $$ = { { $1, "", {} }}; }
|
||||
| symbol_list_with_tex_and_partition symbol partition
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($2, "", $3);
|
||||
}
|
||||
| symbol_list_with_tex_and_partition COMMA symbol partition
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($3, "", $4);
|
||||
}
|
||||
| symbol partition
|
||||
{ $$ = { { $1, "", $2 }}; }
|
||||
| symbol_list_with_tex_and_partition symbol TEX_NAME
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($2, $3, vector<pair<string,string>>{});
|
||||
}
|
||||
| symbol_list_with_tex_and_partition COMMA symbol TEX_NAME
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($3, $4, vector<pair<string,string>>{});
|
||||
}
|
||||
| symbol TEX_NAME
|
||||
{ $$ = { { $1, $2, {} }}; }
|
||||
| symbol_list_with_tex_and_partition symbol TEX_NAME partition
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($2, $3, $4);
|
||||
}
|
||||
| symbol_list_with_tex_and_partition COMMA symbol TEX_NAME partition
|
||||
{
|
||||
$$ = $1;
|
||||
$$.emplace_back($3, $4, $5);
|
||||
}
|
||||
| symbol TEX_NAME partition
|
||||
{ $$ = { { $1, $2, $3 }}; }
|
||||
;
|
||||
|
||||
log_trend_var : LOG_TREND_VAR '(' LOG_GROWTH_FACTOR EQUAL { driver.begin_trend(); } hand_side ')' log_trend_var_list ';'
|
||||
{ driver.end_trend_var($6); }
|
||||
rplot : RPLOT symbol_list ';' { driver.rplot($2); };
|
||||
|
||||
trend_var : TREND_VAR '(' GROWTH_FACTOR EQUAL { driver.begin_trend(); } hand_side ')' symbol_list_with_tex ';'
|
||||
{ driver.end_trend_var(false, $6, $8); }
|
||||
;
|
||||
|
||||
log_trend_var : LOG_TREND_VAR '(' LOG_GROWTH_FACTOR EQUAL { driver.begin_trend(); } hand_side ')' symbol_list_with_tex ';'
|
||||
{ driver.end_trend_var(true, $6, $8); }
|
||||
;
|
||||
|
||||
log_trend_var_list : log_trend_var_list symbol
|
||||
{ driver.declare_trend_var(true, $2); }
|
||||
| log_trend_var_list COMMA symbol
|
||||
{ driver.declare_trend_var(true, $3); }
|
||||
| symbol
|
||||
{ driver.declare_trend_var(true, $1); }
|
||||
| log_trend_var_list symbol TEX_NAME
|
||||
{ driver.declare_trend_var(true, $2, $3); }
|
||||
| log_trend_var_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_trend_var(true, $3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_trend_var(true, $1, $2); }
|
||||
;
|
||||
|
||||
var : VAR var_list ';'
|
||||
| VAR '(' DEFLATOR EQUAL { driver.begin_trend(); } hand_side ')' nonstationary_var_list ';'
|
||||
{ driver.end_nonstationary_var(false, $6); }
|
||||
| VAR '(' LOG_DEFLATOR EQUAL { driver.begin_trend(); } hand_side ')' nonstationary_var_list ';'
|
||||
{ driver.end_nonstationary_var(true, $6); }
|
||||
var : VAR symbol_list_with_tex_and_partition ';'
|
||||
{ driver.var($2); }
|
||||
| VAR '(' DEFLATOR EQUAL { driver.begin_trend(); } hand_side ')' symbol_list_with_tex_and_partition ';'
|
||||
{ driver.end_nonstationary_var(false, $6, $8); }
|
||||
| VAR '(' LOG_DEFLATOR EQUAL { driver.begin_trend(); } hand_side ')' symbol_list_with_tex_and_partition ';'
|
||||
{ driver.end_nonstationary_var(true, $6, $8); }
|
||||
;
|
||||
|
||||
var_remove : VAR_REMOVE symbol_list ';' { driver.var_remove(); };
|
||||
var_remove : VAR_REMOVE symbol_list ';' { driver.var_remove($2); };
|
||||
|
||||
var_model : VAR_MODEL '(' var_model_options_list ')' ';' { driver.var_model(); }
|
||||
;
|
||||
|
@ -476,194 +568,27 @@ var_expectation_model_option : VARIABLE EQUAL symbol
|
|||
{ driver.option_num("time_shift", $3); }
|
||||
;
|
||||
|
||||
nonstationary_var_list : nonstationary_var_list symbol
|
||||
{ driver.declare_nonstationary_var($2); }
|
||||
| nonstationary_var_list COMMA symbol
|
||||
{ driver.declare_nonstationary_var($3); }
|
||||
| symbol
|
||||
{ driver.declare_nonstationary_var($1); }
|
||||
| nonstationary_var_list symbol named_var
|
||||
{ driver.declare_nonstationary_var($2, "", $3); }
|
||||
| nonstationary_var_list COMMA symbol named_var
|
||||
{ driver.declare_nonstationary_var($3, "", $4); }
|
||||
| symbol named_var
|
||||
{ driver.declare_nonstationary_var($1, "", $2); }
|
||||
| nonstationary_var_list symbol TEX_NAME
|
||||
{ driver.declare_nonstationary_var($2, $3); }
|
||||
| nonstationary_var_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_nonstationary_var($3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_nonstationary_var($1, $2); }
|
||||
| nonstationary_var_list symbol TEX_NAME named_var
|
||||
{ driver.declare_nonstationary_var($2, $3, $4); }
|
||||
| nonstationary_var_list COMMA symbol TEX_NAME named_var
|
||||
{ driver.declare_nonstationary_var($3, $4, $5); }
|
||||
| symbol TEX_NAME named_var
|
||||
{ driver.declare_nonstationary_var($1, $2, $3); }
|
||||
;
|
||||
|
||||
varexo : VAREXO varexo_list ';'
|
||||
varexo : VAREXO symbol_list_with_tex_and_partition ';'
|
||||
{ driver.varexo($2); }
|
||||
;
|
||||
|
||||
varexo_det : VAREXO_DET varexo_det_list ';';
|
||||
|
||||
predetermined_variables : PREDETERMINED_VARIABLES predetermined_variables_list ';';
|
||||
|
||||
parameters : PARAMETERS parameter_list ';';
|
||||
varexo_det : VAREXO_DET symbol_list_with_tex_and_partition ';'
|
||||
{ driver.varexo_det($2); }
|
||||
;
|
||||
|
||||
model_local_variable : MODEL_LOCAL_VARIABLE model_local_variable_list ';';
|
||||
predetermined_variables : PREDETERMINED_VARIABLES symbol_list ';'
|
||||
{ driver.predetermined_variables($2); }
|
||||
;
|
||||
|
||||
named_var_elem : symbol EQUAL QUOTED_STRING
|
||||
{ $$ = { $1, $3 }; }
|
||||
parameters : PARAMETERS symbol_list_with_tex_and_partition ';'
|
||||
{ driver.parameters($2); }
|
||||
;
|
||||
|
||||
named_var_1 : '(' named_var_elem
|
||||
{ $$ = { $2 }; }
|
||||
| '(' COMMA named_var_elem
|
||||
{ $$ = { $3 }; }
|
||||
| named_var_1 named_var_elem
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($2);
|
||||
}
|
||||
| named_var_1 COMMA named_var_elem
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($3);
|
||||
}
|
||||
;
|
||||
model_local_variable : MODEL_LOCAL_VARIABLE symbol_list_with_tex ';'
|
||||
{ driver.model_local_variable($2); }
|
||||
;
|
||||
|
||||
named_var : named_var_1 ')'
|
||||
| named_var_1 COMMA ')'
|
||||
;
|
||||
|
||||
var_list : var_list symbol
|
||||
{ driver.declare_endogenous($2); }
|
||||
| var_list COMMA symbol
|
||||
{ driver.declare_endogenous($3); }
|
||||
| symbol
|
||||
{ driver.declare_endogenous($1); }
|
||||
| var_list symbol named_var
|
||||
{ driver.declare_endogenous($2, "", $3); }
|
||||
| var_list COMMA symbol named_var
|
||||
{ driver.declare_endogenous($3, "", $4); }
|
||||
| symbol named_var
|
||||
{ driver.declare_endogenous($1, "", $2); }
|
||||
| var_list symbol TEX_NAME
|
||||
{ driver.declare_endogenous($2, $3); }
|
||||
| var_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_endogenous($3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_endogenous($1, $2); }
|
||||
| var_list symbol TEX_NAME named_var
|
||||
{ driver.declare_endogenous($2, $3, $4); }
|
||||
| var_list COMMA symbol TEX_NAME named_var
|
||||
{ driver.declare_endogenous($3, $4, $5); }
|
||||
| symbol TEX_NAME named_var
|
||||
{ driver.declare_endogenous($1, $2, $3); }
|
||||
;
|
||||
|
||||
varexo_list : varexo_list symbol
|
||||
{ driver.declare_exogenous($2); }
|
||||
| varexo_list COMMA symbol
|
||||
{ driver.declare_exogenous($3); }
|
||||
| symbol
|
||||
{ driver.declare_exogenous($1); }
|
||||
| varexo_list symbol named_var
|
||||
{ driver.declare_exogenous($2, "", $3); }
|
||||
| varexo_list COMMA symbol named_var
|
||||
{ driver.declare_exogenous($3, "", $4); }
|
||||
| symbol named_var
|
||||
{ driver.declare_exogenous($1, "", $2); }
|
||||
| varexo_list symbol TEX_NAME
|
||||
{ driver.declare_exogenous($2, $3); }
|
||||
| varexo_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_exogenous($3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_exogenous($1, $2); }
|
||||
| varexo_list symbol TEX_NAME named_var
|
||||
{ driver.declare_exogenous($2, $3, $4); }
|
||||
| varexo_list COMMA symbol TEX_NAME named_var
|
||||
{ driver.declare_exogenous($3, $4, $5); }
|
||||
| symbol TEX_NAME named_var
|
||||
{ driver.declare_exogenous($1, $2, $3); }
|
||||
;
|
||||
|
||||
varexo_det_list : varexo_det_list symbol
|
||||
{ driver.declare_exogenous_det($2); }
|
||||
| varexo_det_list COMMA symbol
|
||||
{ driver.declare_exogenous_det($3); }
|
||||
| symbol
|
||||
{ driver.declare_exogenous_det($1); }
|
||||
| varexo_det_list symbol named_var
|
||||
{ driver.declare_exogenous_det($2, "", $3); }
|
||||
| varexo_det_list COMMA symbol named_var
|
||||
{ driver.declare_exogenous_det($3, "", $4); }
|
||||
| symbol named_var
|
||||
{ driver.declare_exogenous_det($1, "", $2); }
|
||||
| varexo_det_list symbol TEX_NAME
|
||||
{ driver.declare_exogenous_det($2, $3); }
|
||||
| varexo_det_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_exogenous_det($3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_exogenous_det($1, $2); }
|
||||
| varexo_det_list symbol TEX_NAME named_var
|
||||
{ driver.declare_exogenous_det($2, $3, $4); }
|
||||
| varexo_det_list COMMA symbol TEX_NAME named_var
|
||||
{ driver.declare_exogenous_det($3, $4, $5); }
|
||||
| symbol TEX_NAME named_var
|
||||
{ driver.declare_exogenous_det($1, $2, $3); }
|
||||
;
|
||||
|
||||
parameter_list : parameter_list symbol
|
||||
{ driver.declare_parameter($2); }
|
||||
| parameter_list COMMA symbol
|
||||
{ driver.declare_parameter($3); }
|
||||
| symbol
|
||||
{ driver.declare_parameter($1); }
|
||||
| parameter_list symbol named_var
|
||||
{ driver.declare_parameter($2, "", $3); }
|
||||
| parameter_list COMMA symbol named_var
|
||||
{ driver.declare_parameter($3, "", $4); }
|
||||
| symbol named_var
|
||||
{ driver.declare_parameter($1, "", $2); }
|
||||
| parameter_list symbol TEX_NAME
|
||||
{ driver.declare_parameter($2, $3); }
|
||||
| parameter_list COMMA symbol TEX_NAME
|
||||
{ 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
|
||||
{ driver.add_predetermined_variable($2); }
|
||||
| predetermined_variables_list COMMA symbol
|
||||
{ driver.add_predetermined_variable($3); }
|
||||
| symbol
|
||||
{ driver.add_predetermined_variable($1); }
|
||||
;
|
||||
|
||||
model_local_variable_list : model_local_variable_list symbol
|
||||
{ driver.declare_model_local_variable($2); }
|
||||
| model_local_variable_list COMMA symbol
|
||||
{ driver.declare_model_local_variable($3); }
|
||||
| symbol
|
||||
{ driver.declare_model_local_variable($1); }
|
||||
| model_local_variable_list symbol TEX_NAME
|
||||
{ driver.declare_model_local_variable($2, $3); }
|
||||
| model_local_variable_list COMMA symbol TEX_NAME
|
||||
{ driver.declare_model_local_variable($3, $4); }
|
||||
| symbol TEX_NAME
|
||||
{ driver.declare_model_local_variable($1, $2); }
|
||||
;
|
||||
|
||||
change_type : CHANGE_TYPE '(' change_type_arg ')' change_type_var_list ';'
|
||||
change_type : CHANGE_TYPE '(' change_type_arg ')' symbol_list ';'
|
||||
{ driver.change_type($3, $5); }
|
||||
;
|
||||
|
||||
|
@ -677,20 +602,6 @@ change_type_arg : PARAMETERS
|
|||
{ $$ = SymbolType::exogenousDet; }
|
||||
;
|
||||
|
||||
change_type_var_list : symbol
|
||||
{ $$ = { $1 }; }
|
||||
| change_type_var_list symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($2);
|
||||
}
|
||||
| change_type_var_list COMMA symbol
|
||||
{
|
||||
$$ = $1;
|
||||
$$.push_back($3);
|
||||
}
|
||||
;
|
||||
|
||||
periods : PERIODS INT_NUMBER ';'
|
||||
{ driver.periods($2); }
|
||||
| PERIODS EQUAL INT_NUMBER ';'
|
||||
|
@ -1013,7 +924,7 @@ model_option : BLOCK { driver.block(); }
|
|||
| USE_DLL { driver.use_dll(); }
|
||||
| NO_STATIC { driver.no_static();}
|
||||
| DIFFERENTIATE_FORWARD_VARS { driver.differentiate_forward_vars_all(); }
|
||||
| DIFFERENTIATE_FORWARD_VARS EQUAL '(' symbol_list ')' { driver.differentiate_forward_vars_some(); }
|
||||
| DIFFERENTIATE_FORWARD_VARS EQUAL '(' symbol_list ')' { driver.differentiate_forward_vars_some($4); }
|
||||
| o_linear
|
||||
| PARALLEL_LOCAL_FILES EQUAL '(' parallel_local_filename_list ')'
|
||||
| BALANCED_GROWTH_TEST_TOL EQUAL non_negative_number { driver.balanced_growth_test_tol($3); }
|
||||
|
@ -1278,18 +1189,12 @@ svar_identification_elem : EXCLUSION LAG INT_NUMBER ';' svar_equation_list
|
|||
{ driver.add_lower_cholesky(); }
|
||||
;
|
||||
|
||||
svar_equation_list : svar_equation_list EQUATION INT_NUMBER COMMA svar_var_list ';'
|
||||
{ driver.add_restriction_in_equation($3); }
|
||||
| EQUATION INT_NUMBER COMMA svar_var_list ';'
|
||||
{ driver.add_restriction_in_equation($2); }
|
||||
svar_equation_list : svar_equation_list EQUATION INT_NUMBER COMMA symbol_list ';'
|
||||
{ driver.add_restriction_in_equation($3, $5); }
|
||||
| EQUATION INT_NUMBER COMMA symbol_list ';'
|
||||
{ driver.add_restriction_in_equation($2, $4); }
|
||||
;
|
||||
|
||||
svar_var_list : svar_var_list COMMA symbol
|
||||
{ driver.add_in_svar_restriction_symbols($3); }
|
||||
| symbol
|
||||
{ driver.add_in_svar_restriction_symbols($1); }
|
||||
;
|
||||
|
||||
restriction_expression : expression {driver.check_restriction_expression_constant($1);}
|
||||
| restriction_expression_1
|
||||
;
|
||||
|
@ -1676,13 +1581,13 @@ external_function_options : o_ext_func_name
|
|||
;
|
||||
|
||||
stoch_simul : STOCH_SIMUL ';'
|
||||
{ driver.stoch_simul(); }
|
||||
{ driver.stoch_simul({}); }
|
||||
| STOCH_SIMUL '(' stoch_simul_options_list ')' ';'
|
||||
{ driver.stoch_simul(); }
|
||||
{ driver.stoch_simul({}); }
|
||||
| STOCH_SIMUL symbol_list ';'
|
||||
{ driver.stoch_simul(); }
|
||||
{ driver.stoch_simul($2); }
|
||||
| STOCH_SIMUL '(' stoch_simul_options_list ')' symbol_list ';'
|
||||
{ driver.stoch_simul(); }
|
||||
{ driver.stoch_simul($5); }
|
||||
;
|
||||
|
||||
stoch_simul_options_list : stoch_simul_options_list COMMA stoch_simul_options
|
||||
|
@ -1749,19 +1654,6 @@ stoch_simul_options : stoch_simul_primary_options
|
|||
| o_one_sided_hp_filter
|
||||
;
|
||||
|
||||
symbol_list : symbol_list symbol
|
||||
{ driver.add_in_symbol_list($2); }
|
||||
| symbol_list COMMA symbol
|
||||
{ driver.add_in_symbol_list($3); }
|
||||
| symbol
|
||||
{ driver.add_in_symbol_list($1); }
|
||||
;
|
||||
|
||||
symbol_list_ext : symbol_list
|
||||
| ':'
|
||||
{ driver.add_in_symbol_list(":"); }
|
||||
;
|
||||
|
||||
signed_integer : PLUS INT_NUMBER
|
||||
{ $$ = $2; }
|
||||
| MINUS INT_NUMBER
|
||||
|
@ -2187,13 +2079,13 @@ options_eq_opt : symbol '.' OPTIONS
|
|||
;
|
||||
|
||||
estimation : ESTIMATION ';'
|
||||
{ driver.run_estimation(); }
|
||||
{ driver.run_estimation({}); }
|
||||
| ESTIMATION '(' estimation_options_list ')' ';'
|
||||
{ driver.run_estimation(); }
|
||||
{ driver.run_estimation({}); }
|
||||
| ESTIMATION symbol_list ';'
|
||||
{ driver.run_estimation(); }
|
||||
{ driver.run_estimation($2); }
|
||||
| ESTIMATION '(' estimation_options_list ')' symbol_list ';'
|
||||
{ driver.run_estimation(); }
|
||||
{ driver.run_estimation($5); }
|
||||
;
|
||||
|
||||
estimation_options_list : estimation_options_list COMMA estimation_options
|
||||
|
@ -2426,7 +2318,7 @@ optim_weights_list : optim_weights_list symbol expression ';'
|
|||
{ driver.set_optim_weights($1, $3, $4); }
|
||||
;
|
||||
|
||||
osr_params : OSR_PARAMS symbol_list ';' { driver.set_osr_params(); };
|
||||
osr_params : OSR_PARAMS symbol_list ';' { driver.set_osr_params($2); };
|
||||
|
||||
|
||||
osr_options_list : osr_options_list COMMA osr_options
|
||||
|
@ -2443,25 +2335,25 @@ osr_options : stoch_simul_primary_options
|
|||
;
|
||||
|
||||
osr : OSR ';'
|
||||
{ driver.run_osr(); }
|
||||
{ driver.run_osr({}); }
|
||||
| OSR '(' osr_options_list ')' ';'
|
||||
{ driver.run_osr(); }
|
||||
{ driver.run_osr({}); }
|
||||
| OSR symbol_list ';'
|
||||
{ driver.run_osr(); }
|
||||
{ driver.run_osr($2); }
|
||||
| OSR '(' osr_options_list ')' symbol_list ';'
|
||||
{driver.run_osr(); }
|
||||
{driver.run_osr($5); }
|
||||
;
|
||||
|
||||
dynatype : DYNATYPE '(' filename ')' ';'
|
||||
{ driver.run_dynatype($3); }
|
||||
{ driver.run_dynatype($3, {}); }
|
||||
| DYNATYPE '(' filename ')' symbol_list ';'
|
||||
{ driver.run_dynatype($3); }
|
||||
{ driver.run_dynatype($3, $5); }
|
||||
;
|
||||
|
||||
dynasave : DYNASAVE '(' filename ')' ';'
|
||||
{ driver.run_dynasave($3); }
|
||||
{ driver.run_dynasave($3, {}); }
|
||||
| DYNASAVE '(' filename ')' symbol_list ';'
|
||||
{ driver.run_dynasave($3); }
|
||||
{ driver.run_dynasave($3, $5); }
|
||||
;
|
||||
|
||||
load_params_and_steady_state : LOAD_PARAMS_AND_STEADY_STATE '(' filename ')' ';'
|
||||
|
@ -2569,13 +2461,13 @@ ramsey_model : RAMSEY_MODEL ';'
|
|||
;
|
||||
|
||||
ramsey_policy : RAMSEY_POLICY ';'
|
||||
{ driver.ramsey_policy(); }
|
||||
{ driver.ramsey_policy({}); }
|
||||
| RAMSEY_POLICY '(' ramsey_policy_options_list ')' ';'
|
||||
{ driver.ramsey_policy(); }
|
||||
{ driver.ramsey_policy({}); }
|
||||
| RAMSEY_POLICY symbol_list ';'
|
||||
{ driver.ramsey_policy(); }
|
||||
{ driver.ramsey_policy($2); }
|
||||
| RAMSEY_POLICY '(' ramsey_policy_options_list ')' symbol_list ';'
|
||||
{ driver.ramsey_policy(); }
|
||||
{ driver.ramsey_policy($5); }
|
||||
;
|
||||
|
||||
ramsey_constraints : RAMSEY_CONSTRAINTS ';' ramsey_constraints_list END ';'
|
||||
|
@ -2648,8 +2540,7 @@ occbin_solver : OCCBIN_SOLVER ';'
|
|||
{ driver.occbin_solver(); }
|
||||
| OCCBIN_SOLVER '(' occbin_solver_options_list ')' ';'
|
||||
{ driver.occbin_solver(); }
|
||||
| OCCBIN_SOLVER '(' occbin_solver_options_list ')' symbol_list ';'
|
||||
{ driver.occbin_solver(); }
|
||||
;
|
||||
|
||||
occbin_solver_options_list : occbin_solver_option COMMA occbin_solver_options_list
|
||||
| occbin_solver_option
|
||||
|
@ -2679,13 +2570,13 @@ occbin_write_regimes_option : o_occbin_write_regimes_periods
|
|||
;
|
||||
|
||||
occbin_graph : OCCBIN_GRAPH ';'
|
||||
{ driver.occbin_graph(); }
|
||||
{ driver.occbin_graph({}); }
|
||||
| OCCBIN_GRAPH '(' occbin_graph_options_list ')' ';'
|
||||
{ driver.occbin_graph(); }
|
||||
{ driver.occbin_graph({}); }
|
||||
| OCCBIN_GRAPH symbol_list ';'
|
||||
{ driver.occbin_graph(); }
|
||||
{ driver.occbin_graph($2); }
|
||||
| OCCBIN_GRAPH '(' occbin_graph_options_list ')' symbol_list ';'
|
||||
{ driver.occbin_graph(); }
|
||||
{ driver.occbin_graph($5); }
|
||||
;
|
||||
|
||||
occbin_graph_options_list : occbin_graph_option COMMA occbin_graph_options_list
|
||||
|
@ -2695,13 +2586,13 @@ occbin_graph_options_list : occbin_graph_option COMMA occbin_graph_options_list
|
|||
occbin_graph_option : o_occbin_graph_noconstant ;
|
||||
|
||||
discretionary_policy : DISCRETIONARY_POLICY ';'
|
||||
{ driver.discretionary_policy(); }
|
||||
{ driver.discretionary_policy({}); }
|
||||
| DISCRETIONARY_POLICY '(' discretionary_policy_options_list ')' ';'
|
||||
{ driver.discretionary_policy(); }
|
||||
{ driver.discretionary_policy({}); }
|
||||
| DISCRETIONARY_POLICY symbol_list ';'
|
||||
{ driver.discretionary_policy(); }
|
||||
{ driver.discretionary_policy($2); }
|
||||
| DISCRETIONARY_POLICY '(' discretionary_policy_options_list ')' symbol_list ';'
|
||||
{ driver.discretionary_policy(); }
|
||||
{ driver.discretionary_policy($5); }
|
||||
;
|
||||
|
||||
discretionary_policy_options_list : discretionary_policy_options_list COMMA discretionary_policy_options
|
||||
|
@ -2754,49 +2645,49 @@ write_latex_steady_state_model : WRITE_LATEX_STEADY_STATE_MODEL ';'
|
|||
;
|
||||
|
||||
shock_decomposition : SHOCK_DECOMPOSITION ';'
|
||||
{driver.shock_decomposition(); }
|
||||
{ driver.shock_decomposition({}); }
|
||||
| SHOCK_DECOMPOSITION '(' shock_decomposition_options_list ')' ';'
|
||||
{ driver.shock_decomposition(); }
|
||||
{ driver.shock_decomposition({}); }
|
||||
| SHOCK_DECOMPOSITION symbol_list ';'
|
||||
{ driver.shock_decomposition(); }
|
||||
{ driver.shock_decomposition($2); }
|
||||
| SHOCK_DECOMPOSITION '(' shock_decomposition_options_list ')' symbol_list ';'
|
||||
{ driver.shock_decomposition(); }
|
||||
{ driver.shock_decomposition($5); }
|
||||
;
|
||||
|
||||
realtime_shock_decomposition : REALTIME_SHOCK_DECOMPOSITION ';'
|
||||
{driver.realtime_shock_decomposition(); }
|
||||
{ driver.realtime_shock_decomposition({}); }
|
||||
| REALTIME_SHOCK_DECOMPOSITION '(' realtime_shock_decomposition_options_list ')' ';'
|
||||
{ driver.realtime_shock_decomposition(); }
|
||||
{ driver.realtime_shock_decomposition({}); }
|
||||
| REALTIME_SHOCK_DECOMPOSITION symbol_list ';'
|
||||
{ driver.realtime_shock_decomposition(); }
|
||||
{ driver.realtime_shock_decomposition($2); }
|
||||
| REALTIME_SHOCK_DECOMPOSITION '(' realtime_shock_decomposition_options_list ')' symbol_list ';'
|
||||
{ driver.realtime_shock_decomposition(); }
|
||||
{ driver.realtime_shock_decomposition($5); }
|
||||
;
|
||||
|
||||
plot_shock_decomposition : PLOT_SHOCK_DECOMPOSITION ';'
|
||||
{driver.plot_shock_decomposition(); }
|
||||
{ driver.plot_shock_decomposition({}); }
|
||||
| PLOT_SHOCK_DECOMPOSITION '(' plot_shock_decomposition_options_list ')' ';'
|
||||
{ driver.plot_shock_decomposition(); }
|
||||
{ driver.plot_shock_decomposition({}); }
|
||||
| PLOT_SHOCK_DECOMPOSITION symbol_list ';'
|
||||
{ driver.plot_shock_decomposition(); }
|
||||
{ driver.plot_shock_decomposition($2); }
|
||||
| PLOT_SHOCK_DECOMPOSITION '(' plot_shock_decomposition_options_list ')' symbol_list ';'
|
||||
{ driver.plot_shock_decomposition(); }
|
||||
{ driver.plot_shock_decomposition($5); }
|
||||
;
|
||||
|
||||
initial_condition_decomposition : INITIAL_CONDITION_DECOMPOSITION ';'
|
||||
{driver.initial_condition_decomposition(); }
|
||||
{ driver.initial_condition_decomposition({}); }
|
||||
| INITIAL_CONDITION_DECOMPOSITION '(' initial_condition_decomposition_options_list ')' ';'
|
||||
{ driver.initial_condition_decomposition(); }
|
||||
{ driver.initial_condition_decomposition({}); }
|
||||
| INITIAL_CONDITION_DECOMPOSITION symbol_list ';'
|
||||
{ driver.initial_condition_decomposition(); }
|
||||
{ driver.initial_condition_decomposition($2); }
|
||||
| INITIAL_CONDITION_DECOMPOSITION '(' initial_condition_decomposition_options_list ')' symbol_list ';'
|
||||
{ driver.initial_condition_decomposition(); }
|
||||
{ driver.initial_condition_decomposition($5); }
|
||||
;
|
||||
|
||||
squeeze_shock_decomposition : SQUEEZE_SHOCK_DECOMPOSITION ';'
|
||||
{ driver.squeeze_shock_decomposition(); }
|
||||
{ driver.squeeze_shock_decomposition({}); }
|
||||
| SQUEEZE_SHOCK_DECOMPOSITION symbol_list ';'
|
||||
{ driver.squeeze_shock_decomposition(); }
|
||||
{ driver.squeeze_shock_decomposition($2); }
|
||||
;
|
||||
|
||||
bvar_prior_option : o_bvar_prior_tau
|
||||
|
@ -2979,13 +2870,13 @@ ms_irf_options_list : ms_irf_option COMMA ms_irf_options_list
|
|||
;
|
||||
|
||||
ms_irf : MS_IRF ';'
|
||||
{ driver.ms_irf(); }
|
||||
{ driver.ms_irf({}); }
|
||||
| MS_IRF '(' ms_irf_options_list ')' ';'
|
||||
{ driver.ms_irf(); }
|
||||
{ driver.ms_irf({}); }
|
||||
| MS_IRF symbol_list ';'
|
||||
{ driver.ms_irf(); }
|
||||
{ driver.ms_irf($2); }
|
||||
| MS_IRF '(' ms_irf_options_list ')' symbol_list ';'
|
||||
{ driver.ms_irf(); }
|
||||
{ driver.ms_irf($5); }
|
||||
;
|
||||
|
||||
ms_compute_probabilities_option : o_output_file_tag
|
||||
|
@ -3253,11 +3144,15 @@ homotopy_item : symbol COMMA expression COMMA expression ';'
|
|||
{ driver.homotopy_val($1, nullptr, $3);}
|
||||
;
|
||||
|
||||
forecast: FORECAST ';' {driver.forecast();}
|
||||
| FORECAST '(' forecast_options ')' ';' {driver.forecast();}
|
||||
| FORECAST symbol_list ';' {driver.forecast();}
|
||||
| FORECAST '(' forecast_options ')' symbol_list ';' {driver.forecast();}
|
||||
;
|
||||
forecast: FORECAST ';'
|
||||
{ driver.forecast({}); }
|
||||
| FORECAST '(' forecast_options ')' ';'
|
||||
{ driver.forecast({}); }
|
||||
| FORECAST symbol_list ';'
|
||||
{ driver.forecast($2); }
|
||||
| FORECAST '(' forecast_options ')' symbol_list ';'
|
||||
{ driver.forecast($5); }
|
||||
;
|
||||
|
||||
forecast_options: forecast_option
|
||||
| forecast_options COMMA forecast_option
|
||||
|
@ -3286,9 +3181,9 @@ conditional_forecast_option : o_periods
|
|||
;
|
||||
|
||||
plot_conditional_forecast : PLOT_CONDITIONAL_FORECAST symbol_list ';'
|
||||
{ driver.plot_conditional_forecast(); }
|
||||
{ driver.plot_conditional_forecast("", $2); }
|
||||
| PLOT_CONDITIONAL_FORECAST '(' PERIODS EQUAL INT_NUMBER ')' symbol_list ';'
|
||||
{ driver.plot_conditional_forecast($5); }
|
||||
{ driver.plot_conditional_forecast($5, $7); }
|
||||
;
|
||||
|
||||
conditional_forecast_paths : CONDITIONAL_FORECAST_PATHS ';' conditional_forecast_paths_shock_list END ';'
|
||||
|
@ -3314,17 +3209,17 @@ steady_state_equation_list : steady_state_equation_list steady_state_equation
|
|||
steady_state_equation : symbol EQUAL expression ';'
|
||||
{ driver.add_steady_state_model_equal($1, $3); }
|
||||
| '[' symbol_list ']' EQUAL expression ';'
|
||||
{ driver.add_steady_state_model_equal_multiple($5); }
|
||||
{ driver.add_steady_state_model_equal_multiple($2, $5); }
|
||||
;
|
||||
|
||||
calib_smoother : CALIB_SMOOTHER ';'
|
||||
{ driver.calib_smoother(); }
|
||||
{ driver.calib_smoother({}); }
|
||||
| CALIB_SMOOTHER '(' calib_smoother_options_list ')' ';'
|
||||
{ driver.calib_smoother(); }
|
||||
{ driver.calib_smoother({}); }
|
||||
| CALIB_SMOOTHER symbol_list ';'
|
||||
{ driver.calib_smoother(); }
|
||||
{ driver.calib_smoother($2); }
|
||||
| CALIB_SMOOTHER '(' calib_smoother_options_list ')' symbol_list ';'
|
||||
{ driver.calib_smoother(); }
|
||||
{ driver.calib_smoother($5); }
|
||||
;
|
||||
|
||||
calib_smoother_options_list : calib_smoother_option COMMA calib_smoother_options_list
|
||||
|
@ -3520,7 +3415,7 @@ o_nocorr : NOCORR { driver.option_num("nocorr", "true"); };
|
|||
o_nofunctions : NOFUNCTIONS { driver.option_num("nofunctions", "true"); };
|
||||
o_nomoments : NOMOMENTS { driver.option_num("nomoments", "true"); };
|
||||
o_irf : IRF EQUAL INT_NUMBER { driver.option_num("irf", $3); };
|
||||
o_irf_shocks : IRF_SHOCKS EQUAL '(' symbol_list ')' { driver.option_symbol_list("irf_shocks"); };
|
||||
o_irf_shocks : IRF_SHOCKS EQUAL '(' symbol_list ')' { driver.option_symbol_list("irf_shocks", $4); };
|
||||
o_hp_filter : HP_FILTER EQUAL non_negative_number { driver.option_num("hp_filter", $3); };
|
||||
o_hp_ngrid : HP_NGRID EQUAL INT_NUMBER {
|
||||
driver.warning("The 'hp_ngrid' option is deprecated. It has been superseded by the 'filtered_theoretical_moments_grid' option.");
|
||||
|
@ -3872,12 +3767,12 @@ o_gsa_logtrans_redform : LOGTRANS_REDFORM EQUAL INT_NUMBER { driver.option_num("
|
|||
o_gsa_threshold_redform : THRESHOLD_REDFORM EQUAL vec_value_w_inf { driver.option_num("threshold_redform",$3); };
|
||||
o_gsa_ksstat_redform : KSSTAT_REDFORM EQUAL non_negative_number { driver.option_num("ksstat_redform", $3); };
|
||||
o_gsa_alpha2_redform : ALPHA2_REDFORM EQUAL non_negative_number { driver.option_num("alpha2_redform", $3); };
|
||||
o_gsa_namendo : NAMENDO EQUAL '(' symbol_list_ext ')' { driver.option_symbol_list("namendo"); };
|
||||
o_gsa_namlagendo : NAMLAGENDO EQUAL '(' symbol_list_ext ')' { driver.option_symbol_list("namlagendo"); };
|
||||
o_gsa_namexo : NAMEXO EQUAL '(' symbol_list_ext ')' { driver.option_symbol_list("namexo"); };
|
||||
o_gsa_namendo : NAMENDO EQUAL '(' symbol_list_or_wildcard ')' { driver.option_symbol_list("namendo", $4); };
|
||||
o_gsa_namlagendo : NAMLAGENDO EQUAL '(' symbol_list_or_wildcard ')' { driver.option_symbol_list("namlagendo", $4); };
|
||||
o_gsa_namexo : NAMEXO EQUAL '(' symbol_list_or_wildcard ')' { driver.option_symbol_list("namexo", $4); };
|
||||
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 '(' symbol_list_ext ')' { driver.option_symbol_list("var_rmse"); };
|
||||
o_gsa_var_rmse : VAR_RMSE EQUAL '(' symbol_list_or_wildcard ')' { driver.option_symbol_list("var_rmse", $4); };
|
||||
o_gsa_pfilt_rmse : PFILT_RMSE EQUAL non_negative_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 non_negative_number { driver.option_num("alpha_rmse", $3); };
|
||||
|
@ -3901,7 +3796,7 @@ o_homotopy_steps : HOMOTOPY_STEPS EQUAL INT_NUMBER {driver.option_num("homotopy_
|
|||
o_homotopy_force_continue: HOMOTOPY_FORCE_CONTINUE EQUAL INT_NUMBER { driver.option_num("homotopy_force_continue",$3); };
|
||||
o_nocheck : NOCHECK {driver.option_num("steadystate.nocheck","true"); };
|
||||
|
||||
o_controlled_varexo : CONTROLLED_VAREXO EQUAL '(' symbol_list ')' { driver.option_symbol_list("controlled_varexo"); };
|
||||
o_controlled_varexo : CONTROLLED_VAREXO EQUAL '(' symbol_list ')' { driver.option_symbol_list("controlled_varexo", $4); };
|
||||
o_parameter_set : PARAMETER_SET EQUAL PRIOR_MODE
|
||||
{ driver.option_str("parameter_set", "prior_mode"); }
|
||||
| PARAMETER_SET EQUAL PRIOR_MEAN
|
||||
|
@ -3934,7 +3829,7 @@ o_final_year : FINAL_YEAR EQUAL INT_NUMBER {driver.option_num("ms.final_year",$3
|
|||
o_final_subperiod : FINAL_SUBPERIOD EQUAL INT_NUMBER {driver.option_num("ms.final_subperiod",$3); };
|
||||
o_data : DATA EQUAL filename { driver.option_str("ms.data", $3); };
|
||||
o_vlist : VLIST EQUAL INT_NUMBER {driver.option_num("ms.vlist",$3); };
|
||||
o_vlistlog : VLISTLOG EQUAL '(' symbol_list ')' {driver.option_symbol_list("ms.vlistlog"); };
|
||||
o_vlistlog : VLISTLOG EQUAL '(' symbol_list ')' {driver.option_symbol_list("ms.vlistlog", $4); };
|
||||
o_vlistper : VLISTPER EQUAL INT_NUMBER {driver.option_num("ms.vlistper",$3); };
|
||||
o_restriction_fname : RESTRICTION_FNAME EQUAL NAME
|
||||
{
|
||||
|
@ -4005,7 +3900,7 @@ o_duration : DURATION EQUAL non_negative_number
|
|||
;
|
||||
o_number_of_regimes : NUMBER_OF_REGIMES EQUAL INT_NUMBER { driver.option_num("ms.number_of_regimes",$3); };
|
||||
o_number_of_lags : NUMBER_OF_LAGS EQUAL INT_NUMBER { driver.option_num("ms.number_of_lags",$3); };
|
||||
o_parameters : PARAMETERS EQUAL '[' symbol_list ']' { driver.option_symbol_list("ms.parameters"); };
|
||||
o_parameters : PARAMETERS EQUAL '[' symbol_list ']' { driver.option_symbol_list("ms.parameters", $4); };
|
||||
o_coefficients : COEFFICIENTS { driver.option_str("ms.coefficients","svar_coefficients"); };
|
||||
o_variances : VARIANCES { driver.option_str("ms.variances","svar_variances"); };
|
||||
o_equations : EQUATIONS EQUAL vec_int
|
||||
|
@ -4014,7 +3909,7 @@ o_equations : EQUATIONS EQUAL vec_int
|
|||
{ driver.option_vec_int("ms.equations",$3); }
|
||||
;
|
||||
o_silent_optimizer : SILENT_OPTIMIZER { driver.option_num("silent_optimizer", "true"); };
|
||||
o_instruments : INSTRUMENTS EQUAL '(' symbol_list ')' {driver.option_symbol_list("instruments"); };
|
||||
o_instruments : INSTRUMENTS EQUAL '(' symbol_list ')' {driver.option_symbol_list("instruments", $4); };
|
||||
|
||||
o_ext_func_name : EXT_FUNC_NAME EQUAL namespace_qualified_filename { driver.external_function_option("name", $3); };
|
||||
o_ext_func_nargs : EXT_FUNC_NARGS EQUAL INT_NUMBER { driver.external_function_option("nargs",$3); };
|
||||
|
@ -4130,10 +4025,10 @@ o_consider_only_observed : CONSIDER_ONLY_OBSERVED { driver.option_str("endo_vars
|
|||
o_no_homotopy : NO_HOMOTOPY { driver.option_num("no_homotopy", "true"); };
|
||||
|
||||
o_infile : INFILE EQUAL filename { driver.option_str("infile", $3); };
|
||||
o_invars : INVARS EQUAL '(' symbol_list ')' { driver.option_symbol_list("invars"); };
|
||||
o_invars : INVARS EQUAL '(' symbol_list ')' { driver.option_symbol_list("invars", $4); };
|
||||
o_period : PERIOD EQUAL INT_NUMBER { driver.option_num("period", $3); };
|
||||
o_outfile : OUTFILE EQUAL filename { driver.option_str("outfile", $3); };
|
||||
o_outvars : OUTVARS EQUAL '(' symbol_list ')' { driver.option_symbol_list("outvars"); };
|
||||
o_outvars : OUTVARS EQUAL '(' symbol_list ')' { driver.option_symbol_list("outvars", $4); };
|
||||
o_lmmcp : LMMCP {driver.option_num("lmmcp.status", "true"); };
|
||||
o_function : FUNCTION EQUAL filename { driver.option_str("function", $3); };
|
||||
o_sampling_draws : SAMPLING_DRAWS EQUAL INT_NUMBER { driver.option_num("sampling_draws",$3); };
|
||||
|
|
|
@ -492,8 +492,8 @@ Epilogue::writeOutput(ostream &output) const
|
|||
for (const auto & [symb_id, expr] : dynamic_def_table)
|
||||
expr->collectVariables(SymbolType::endogenous, endogs);
|
||||
|
||||
SymbolList symbol_list;
|
||||
vector<string> symbol_list;
|
||||
for (auto symb_id : endogs)
|
||||
symbol_list.addSymbol(symbol_table.getName(symb_id));
|
||||
symbol_list.writeOutput("M_.epilogue_var_list_", output);
|
||||
symbol_list.push_back(symbol_table.getName(symb_id));
|
||||
SymbolList{move(symbol_list)}.writeOutput("M_.epilogue_var_list_", output);
|
||||
}
|
||||
|
|
|
@ -91,8 +91,6 @@ ParsingDriver::parse(istream &in, bool debug)
|
|||
{
|
||||
mod_file = make_unique<ModFile>(warnings);
|
||||
|
||||
symbol_list.setSymbolTable(mod_file->symbol_table);
|
||||
|
||||
reset_data_tree();
|
||||
estim_params.init(*data_tree);
|
||||
osr_params.init(*data_tree);
|
||||
|
@ -201,6 +199,13 @@ ParsingDriver::declare_endogenous(const string &name, const string &tex_name, co
|
|||
declare_symbol(name, SymbolType::endogenous, tex_name, partition_value);
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::var(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list)
|
||||
{
|
||||
for (auto &[name, tex_name, partition] : symbol_list)
|
||||
declare_endogenous(name, tex_name, partition);
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_exogenous(const string &name, const string &tex_name, const vector<pair<string, string>> &partition_value)
|
||||
{
|
||||
|
@ -208,9 +213,17 @@ ParsingDriver::declare_exogenous(const string &name, const string &tex_name, con
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_exogenous_det(const string &name, const string &tex_name, const vector<pair<string, string>> &partition_value)
|
||||
ParsingDriver::varexo(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list)
|
||||
{
|
||||
declare_symbol(name, SymbolType::exogenousDet, tex_name, partition_value);
|
||||
for (auto &[name, tex_name, partition] : symbol_list)
|
||||
declare_exogenous(name, tex_name, partition);
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::varexo_det(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list)
|
||||
{
|
||||
for (auto &[name, tex_name, partition] : symbol_list)
|
||||
declare_symbol(name, SymbolType::exogenousDet, tex_name, partition);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -219,6 +232,13 @@ ParsingDriver::declare_parameter(const string &name, const string &tex_name, con
|
|||
declare_symbol(name, SymbolType::parameter, tex_name, partition_value);
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::parameters(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list)
|
||||
{
|
||||
for (auto &[name, tex_name, partition] : symbol_list)
|
||||
declare_parameter(name, tex_name, partition);
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_statement_local_variable(const string &name)
|
||||
{
|
||||
|
@ -247,15 +267,15 @@ ParsingDriver::begin_trend()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_trend_var(bool log_trend, const string &name, const string &tex_name)
|
||||
ParsingDriver::end_trend_var(bool log_trend, expr_t growth_factor, const vector<pair<string, string>> &symbol_list)
|
||||
{
|
||||
declare_symbol(name, log_trend ? SymbolType::logTrend : SymbolType::trend, tex_name, {});
|
||||
declared_trend_vars.push_back(mod_file->symbol_table.getID(name));
|
||||
}
|
||||
vector<int> declared_trend_vars;
|
||||
for (auto &[name, tex_name] : symbol_list)
|
||||
{
|
||||
declare_symbol(name, log_trend ? SymbolType::logTrend : SymbolType::trend, tex_name, {});
|
||||
declared_trend_vars.push_back(mod_file->symbol_table.getID(name));
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::end_trend_var(expr_t growth_factor)
|
||||
{
|
||||
try
|
||||
{
|
||||
dynamic_model->addTrendVariables(declared_trend_vars, growth_factor);
|
||||
|
@ -269,11 +289,14 @@ ParsingDriver::end_trend_var(expr_t growth_factor)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::add_predetermined_variable(const string &name)
|
||||
ParsingDriver::predetermined_variables(const vector<string> &symbol_list)
|
||||
{
|
||||
check_symbol_is_endogenous(name);
|
||||
int symb_id = mod_file->symbol_table.getID(name);
|
||||
mod_file->symbol_table.markPredetermined(symb_id);
|
||||
for (auto &name : symbol_list)
|
||||
{
|
||||
check_symbol_is_endogenous(name);
|
||||
int symb_id = mod_file->symbol_table.getID(name);
|
||||
mod_file->symbol_table.markPredetermined(symb_id);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -449,17 +472,17 @@ ParsingDriver::add_expression_variable(const string &name)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_nonstationary_var(const string &name, const string &tex_name, const vector<pair<string, string>> &partition_value)
|
||||
ParsingDriver::end_nonstationary_var(bool log_deflator, expr_t deflator, const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list)
|
||||
{
|
||||
declare_endogenous(name, tex_name, partition_value);
|
||||
|
||||
declared_nonstationary_vars.push_back(mod_file->symbol_table.getID(name));
|
||||
mod_file->nonstationary_variables = true;
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::end_nonstationary_var(bool log_deflator, expr_t deflator)
|
||||
{
|
||||
vector<int> declared_nonstationary_vars;
|
||||
for (auto &[name, tex_name, partition] : symbol_list)
|
||||
{
|
||||
declare_endogenous(name, tex_name, partition);
|
||||
declared_nonstationary_vars.push_back(mod_file->symbol_table.getID(name));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
dynamic_model->addNonstationaryVariables(declared_nonstationary_vars, log_deflator, deflator);
|
||||
|
@ -608,10 +631,10 @@ ParsingDriver::add_generate_irfs_exog_element(string exo, const string &value)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::forecast()
|
||||
ParsingDriver::forecast(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<ForecastStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<ForecastStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
|
@ -646,13 +669,12 @@ ParsingDriver::differentiate_forward_vars_all()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::differentiate_forward_vars_some()
|
||||
ParsingDriver::differentiate_forward_vars_some(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->differentiate_forward_vars = true;
|
||||
mod_file->differentiate_forward_vars_subset = symbol_list.get_symbols();
|
||||
mod_file->differentiate_forward_vars_subset = move(symbol_list);
|
||||
for (auto &it : mod_file->differentiate_forward_vars_subset)
|
||||
check_symbol_is_endogenous(it);
|
||||
symbol_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -989,7 +1011,6 @@ ParsingDriver::end_svar_identification()
|
|||
svar_lower_cholesky,
|
||||
svar_constants_exclusion,
|
||||
mod_file->symbol_table));
|
||||
svar_restriction_symbols.clear();
|
||||
svar_equation_restrictions.clear();
|
||||
svar_ident_restrictions.clear();
|
||||
svar_Qi_restriction_nbr.clear();
|
||||
|
@ -1026,7 +1047,7 @@ ParsingDriver::combine_lag_and_restriction(const string &lag)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::add_restriction_in_equation(const string &equation)
|
||||
ParsingDriver::add_restriction_in_equation(const string &equation, const vector<string> &symbol_list)
|
||||
{
|
||||
int eqn = stoi(equation);
|
||||
if (eqn < 1)
|
||||
|
@ -1035,22 +1056,19 @@ ParsingDriver::add_restriction_in_equation(const string &equation)
|
|||
if (svar_equation_restrictions.count(eqn) > 0)
|
||||
error("equation number " + equation + " referenced more than once under a single lag.");
|
||||
|
||||
vector<int> svar_restriction_symbols;
|
||||
for (auto &name : symbol_list)
|
||||
{
|
||||
check_symbol_existence(name);
|
||||
int symb_id = mod_file->symbol_table.getID(name);
|
||||
|
||||
for (const auto &viit : svar_restriction_symbols)
|
||||
if (symb_id == viit)
|
||||
error(name + " restriction added twice.");
|
||||
|
||||
svar_restriction_symbols.push_back(symb_id);
|
||||
}
|
||||
svar_equation_restrictions[eqn] = svar_restriction_symbols;
|
||||
|
||||
svar_restriction_symbols.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::add_in_svar_restriction_symbols(const string &tmp_var)
|
||||
{
|
||||
check_symbol_existence(tmp_var);
|
||||
int symb_id = mod_file->symbol_table.getID(tmp_var);
|
||||
|
||||
for (const auto &viit : svar_restriction_symbols)
|
||||
if (symb_id == viit)
|
||||
error(tmp_var + " restriction added twice.");
|
||||
|
||||
svar_restriction_symbols.push_back(symb_id);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1274,7 +1292,7 @@ ParsingDriver::option_date(string name_option, string opt)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::option_symbol_list(string name_option)
|
||||
ParsingDriver::option_symbol_list(string name_option, vector<string> symbol_list)
|
||||
{
|
||||
if (options_list.symbol_list_options.find(name_option)
|
||||
!= options_list.symbol_list_options.end())
|
||||
|
@ -1282,8 +1300,7 @@ ParsingDriver::option_symbol_list(string name_option)
|
|||
|
||||
if (name_option.compare("irf_shocks") == 0)
|
||||
{
|
||||
vector<string> shocks = symbol_list.get_symbols();
|
||||
for (auto &shock : shocks)
|
||||
for (auto &shock : symbol_list)
|
||||
{
|
||||
if (!mod_file->symbol_table.exists(shock))
|
||||
error("Unknown symbol: " + shock);
|
||||
|
@ -1294,14 +1311,12 @@ ParsingDriver::option_symbol_list(string name_option)
|
|||
|
||||
if (name_option.compare("ms.parameters") == 0)
|
||||
{
|
||||
vector<string> parameters = symbol_list.get_symbols();
|
||||
for (auto &it : parameters)
|
||||
for (auto &it : symbol_list)
|
||||
if (mod_file->symbol_table.getType(it) != SymbolType::parameter)
|
||||
error("Variables passed to the parameters option of the markov_switching statement must be parameters. Caused by: " + it);
|
||||
}
|
||||
|
||||
options_list.symbol_list_options[move(name_option)] = symbol_list;
|
||||
symbol_list.clear();
|
||||
options_list.symbol_list_options[move(name_option)] = move(symbol_list);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1350,27 +1365,22 @@ ParsingDriver::linear()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::add_in_symbol_list(const string &tmp_var)
|
||||
ParsingDriver::rplot(vector<string> symbol_list)
|
||||
{
|
||||
symbol_list.addSymbol(tmp_var);
|
||||
mod_file->addStatement(make_unique<RplotStatement>(move(symbol_list), mod_file->symbol_table));
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::rplot()
|
||||
{
|
||||
mod_file->addStatement(make_unique<RplotStatement>(symbol_list));
|
||||
symbol_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::stoch_simul()
|
||||
ParsingDriver::stoch_simul(SymbolList symbol_list)
|
||||
{
|
||||
//make sure default order is known to preprocessor, see #49
|
||||
if (options_list.num_options.find("order") == options_list.num_options.end())
|
||||
options_list.num_options["order"] = "2";
|
||||
|
||||
mod_file->addStatement(make_unique<StochSimulStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
symbol_list.removeDuplicates("stoch_simul", warnings);
|
||||
|
||||
mod_file->addStatement(make_unique<StochSimulStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
|
@ -1519,7 +1529,6 @@ ParsingDriver::set_unit_root_vars()
|
|||
{
|
||||
mod_file->addStatement(make_unique<UnitRootVarsStatement>());
|
||||
warning("''unit_root_vars'' is now obsolete; use the ''diffuse_filter'' option of ''estimation'' instead");
|
||||
symbol_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1817,10 +1826,9 @@ ParsingDriver::set_corr_options(const string &name1, const string &name2, const
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::run_estimation()
|
||||
ParsingDriver::run_estimation(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<EstimationStatement>(mod_file->symbol_table, symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<EstimationStatement>(mod_file->symbol_table, move(symbol_list), options_list));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
|
@ -1951,32 +1959,31 @@ ParsingDriver::optim_weights()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::set_osr_params()
|
||||
ParsingDriver::set_osr_params(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<OsrParamsStatement>(symbol_list, mod_file->symbol_table));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<OsrParamsStatement>(move(symbol_list), mod_file->symbol_table));
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::run_osr()
|
||||
ParsingDriver::run_osr(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<OsrStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<OsrStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::run_dynatype(const string &filename)
|
||||
ParsingDriver::run_dynatype(const string &filename, vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<DynaTypeStatement>(symbol_list, filename));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<DynaTypeStatement>(move(symbol_list), filename,
|
||||
mod_file->symbol_table));
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::run_dynasave(const string &filename)
|
||||
ParsingDriver::run_dynasave(const string &filename, vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<DynaSaveStatement>(symbol_list, filename));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<DynaSaveStatement>(move(symbol_list), filename,
|
||||
mod_file->symbol_table));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2084,7 +2091,7 @@ ParsingDriver::ramsey_model()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::ramsey_policy()
|
||||
ParsingDriver::ramsey_policy(vector<string> symbol_list)
|
||||
{
|
||||
warning("The 'ramsey_policy' statement is deprecated. Please use 'ramsey_model', 'stoch_simul', and 'evaluate_planner_objective' instead.");
|
||||
|
||||
|
@ -2111,9 +2118,9 @@ ParsingDriver::ramsey_policy()
|
|||
for (const auto &s : it->second.getSymbols())
|
||||
check_symbol_is_endogenous(s);
|
||||
|
||||
mod_file->addStatement(make_unique<RamseyPolicyStatement>(symbol_list, options_list));
|
||||
mod_file->addStatement(make_unique<RamseyPolicyStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
symbol_list.clear();
|
||||
planner_discount = nullptr;
|
||||
}
|
||||
|
||||
|
@ -2146,15 +2153,14 @@ ParsingDriver::occbin_write_regimes()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::occbin_graph()
|
||||
ParsingDriver::occbin_graph(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<OccbinGraphStatement>(symbol_list, options_list));
|
||||
mod_file->addStatement(make_unique<OccbinGraphStatement>(move(symbol_list), options_list));
|
||||
options_list.clear();
|
||||
symbol_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::discretionary_policy()
|
||||
ParsingDriver::discretionary_policy(vector<string> symbol_list)
|
||||
{
|
||||
/* The logic here is different from “ramsey_policy” and “ramsey_model”,
|
||||
because we want to allow several instances of “discretionary_policy” in
|
||||
|
@ -2172,8 +2178,8 @@ ParsingDriver::discretionary_policy()
|
|||
for (const auto &s : it->second.getSymbols())
|
||||
check_symbol_is_endogenous(s);
|
||||
|
||||
mod_file->addStatement(make_unique<DiscretionaryPolicyStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<DiscretionaryPolicyStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
planner_discount = nullptr;
|
||||
}
|
||||
|
@ -2252,10 +2258,10 @@ ParsingDriver::ms_compute_probabilities()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::ms_irf()
|
||||
ParsingDriver::ms_irf(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<MSSBVARIrfStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<MSSBVARIrfStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
|
@ -2332,42 +2338,44 @@ ParsingDriver::markov_switching()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::shock_decomposition()
|
||||
ParsingDriver::shock_decomposition(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<ShockDecompositionStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<ShockDecompositionStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::realtime_shock_decomposition()
|
||||
ParsingDriver::realtime_shock_decomposition(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<RealtimeShockDecompositionStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<RealtimeShockDecompositionStatement>(move(symbol_list),
|
||||
options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::plot_shock_decomposition()
|
||||
ParsingDriver::plot_shock_decomposition(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<PlotShockDecompositionStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<PlotShockDecompositionStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::initial_condition_decomposition()
|
||||
ParsingDriver::initial_condition_decomposition(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<InitialConditionDecompositionStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<InitialConditionDecompositionStatement>(move(symbol_list),
|
||||
options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::squeeze_shock_decomposition()
|
||||
ParsingDriver::squeeze_shock_decomposition(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<SqueezeShockDecompositionStatement>(symbol_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<SqueezeShockDecompositionStatement>(move(symbol_list),
|
||||
mod_file->symbol_table));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2378,11 +2386,11 @@ ParsingDriver::conditional_forecast()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::plot_conditional_forecast(const string &periods)
|
||||
ParsingDriver::plot_conditional_forecast(const string &periods, vector<string> symbol_list)
|
||||
{
|
||||
int nperiods = periods.empty() ? -1 : stoi(periods);
|
||||
mod_file->addStatement(make_unique<PlotConditionalForecastStatement>(nperiods, symbol_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<PlotConditionalForecastStatement>(nperiods, move(symbol_list),
|
||||
mod_file->symbol_table));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2393,10 +2401,10 @@ ParsingDriver::conditional_forecast_paths()
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::calib_smoother()
|
||||
ParsingDriver::calib_smoother(vector<string> symbol_list)
|
||||
{
|
||||
mod_file->addStatement(make_unique<CalibSmootherStatement>(symbol_list, options_list));
|
||||
symbol_list.clear();
|
||||
mod_file->addStatement(make_unique<CalibSmootherStatement>(move(symbol_list), options_list,
|
||||
mod_file->symbol_table));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
|
@ -2465,9 +2473,10 @@ ParsingDriver::add_model_equal_with_zero_rhs(expr_t arg)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::declare_model_local_variable(const string &name, const string &tex_name)
|
||||
ParsingDriver::model_local_variable(const vector<pair<string, string>> &symbol_list)
|
||||
{
|
||||
declare_symbol(name, SymbolType::modelLocalVariable, tex_name, {});
|
||||
for (auto &[name, tex_name] : symbol_list)
|
||||
declare_symbol(name, SymbolType::modelLocalVariable, tex_name, {});
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2499,9 +2508,9 @@ ParsingDriver::declare_and_init_model_local_variable(const string &name, expr_t
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::change_type(SymbolType new_type, const vector<string> &var_list)
|
||||
ParsingDriver::change_type(SymbolType new_type, const vector<string> &symbol_list)
|
||||
{
|
||||
for (auto &it : var_list)
|
||||
for (auto &it : symbol_list)
|
||||
{
|
||||
int id;
|
||||
try
|
||||
|
@ -3147,12 +3156,11 @@ ParsingDriver::add_steady_state_model_equal(const string &varname, expr_t expr)
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::add_steady_state_model_equal_multiple(expr_t expr)
|
||||
ParsingDriver::add_steady_state_model_equal_multiple(const vector<string> &symbol_list, expr_t expr)
|
||||
{
|
||||
const vector<string> &symbs = symbol_list.get_symbols();
|
||||
vector<int> ids;
|
||||
|
||||
for (const auto &symb : symbs)
|
||||
for (const auto &symb : symbol_list)
|
||||
{
|
||||
int id;
|
||||
try
|
||||
|
@ -3171,14 +3179,12 @@ ParsingDriver::add_steady_state_model_equal_multiple(expr_t expr)
|
|||
}
|
||||
|
||||
mod_file->steady_state_model.addMultipleDefinitions(ids, expr);
|
||||
|
||||
symbol_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::add_graph_format(const string &name)
|
||||
ParsingDriver::add_graph_format(string name)
|
||||
{
|
||||
graph_formats.addSymbol(name);
|
||||
graph_formats.emplace_back(move(name));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -3640,15 +3646,14 @@ ParsingDriver::begin_model_replace(const vector<pair<string, string>> &listed_eq
|
|||
}
|
||||
|
||||
void
|
||||
ParsingDriver::var_remove()
|
||||
ParsingDriver::var_remove(const vector<string> &symbol_list)
|
||||
{
|
||||
for (const auto &name : symbol_list.getSymbols())
|
||||
for (const auto &name : symbol_list)
|
||||
{
|
||||
check_symbol_existence(name);
|
||||
int symb_id = mod_file->symbol_table.getID(name);
|
||||
mod_file->symbol_table.changeType(symb_id, SymbolType::excludedVariable);
|
||||
}
|
||||
symbol_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -111,9 +111,6 @@ private:
|
|||
//! Helper to add a symbol declaration
|
||||
void declare_symbol(const string &name, SymbolType type, const string &tex_name, const vector<pair<string, string>> &partition_value);
|
||||
|
||||
//! Stores temporary symbol table
|
||||
SymbolList symbol_list;
|
||||
|
||||
//! Temporary store for the planner objective
|
||||
unique_ptr<StaticModel> planner_objective;
|
||||
|
||||
|
@ -185,8 +182,6 @@ private:
|
|||
SvarIdentificationStatement::svar_identification_restrictions_t svar_ident_restrictions;
|
||||
//! Temporary storage for mapping the equation number to the restrictions within an svar_identification block
|
||||
map<int, vector<int>> svar_equation_restrictions;
|
||||
//! Temporary storage for restrictions in an equation within an svar_identification block
|
||||
vector<int> svar_restriction_symbols;
|
||||
//! Temporary storage for constants exculsion within an svar_identification
|
||||
bool svar_constants_exclusion;
|
||||
//! Temporary storage for upper cholesky within an svar_identification block
|
||||
|
@ -222,10 +217,6 @@ private:
|
|||
int current_external_function_id;
|
||||
//! Temporary storage for option list provided to external_function()
|
||||
ExternalFunctionsTable::external_function_options current_external_function_options;
|
||||
//! Temporary storage for declaring trend variables
|
||||
vector<int> declared_trend_vars;
|
||||
//! Temporary storage for declaring nonstationary variables
|
||||
vector<int> declared_nonstationary_vars;
|
||||
//! Temporary storage for a variance declared in the prior statement
|
||||
expr_t prior_variance;
|
||||
SubsamplesStatement::subsample_declaration_map_t subsample_declaration_map;
|
||||
|
@ -246,7 +237,7 @@ private:
|
|||
//! Adds a model lagged variable to ModelTree and VariableTable
|
||||
expr_t add_model_variable(int symb_id, int lag);
|
||||
//! For parsing the graph_format option
|
||||
SymbolList graph_formats;
|
||||
vector<string> graph_formats;
|
||||
//! Temporary storage for equation tags
|
||||
map<string, string> eq_tags;
|
||||
// Temporary storages for pac_target_info
|
||||
|
@ -342,7 +333,7 @@ public:
|
|||
//! the differentiate_forward_vars option is enabled (for all vars)
|
||||
void differentiate_forward_vars_all();
|
||||
//! the differentiate_forward_vars option is enabled (for a subset of vars)
|
||||
void differentiate_forward_vars_some();
|
||||
void differentiate_forward_vars_some(vector<string> symbol_list);
|
||||
//! cutoff option of model block
|
||||
void cutoff(const string &value);
|
||||
//! mfs option of model block
|
||||
|
@ -363,14 +354,20 @@ public:
|
|||
void initval_file();
|
||||
//! Declares an endogenous variable
|
||||
void declare_endogenous(const string &name, const string &tex_name = "", const vector<pair<string, string>> &partition_value = {});
|
||||
// Handles a “var” statement (without “deflator” or “log_deflator” options)
|
||||
void var(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list);
|
||||
//! Declares an exogenous variable
|
||||
void declare_exogenous(const string &name, const string &tex_name = "", const vector<pair<string, string>> &partition_value = {});
|
||||
//! Declares an exogenous deterministic variable
|
||||
void declare_exogenous_det(const string &name, const string &tex_name = "", const vector<pair<string, string>> &partition_value = {});
|
||||
// Handles a “varexo” statement
|
||||
void varexo(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list);
|
||||
// Handles a “varexo_det” statement
|
||||
void varexo_det(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list);
|
||||
//! Declares a parameter
|
||||
void declare_parameter(const string &name, const string &tex_name = "", const vector<pair<string, string>> &partition_value = {});
|
||||
//! Declares a model local variable
|
||||
void declare_model_local_variable(const string &name, const string &tex_name = "");
|
||||
// Handles a “parameters” statement
|
||||
void parameters(const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list);
|
||||
// Handles a “model_local_variable” statement
|
||||
void model_local_variable(const vector<pair<string, string>> &symbol_list);
|
||||
//! Declares a statement local variable
|
||||
void declare_statement_local_variable(const string &name);
|
||||
//! Completes a subsample statement
|
||||
|
@ -386,12 +383,12 @@ public:
|
|||
void set_planner_discount(expr_t value);
|
||||
//! Sets the value of the planner_discount_latex_name option of ramsey_model
|
||||
void set_planner_discount_latex_name(string tex_name);
|
||||
//! Adds a predetermined_variable
|
||||
void add_predetermined_variable(const string &name);
|
||||
//! Handles a “predetermined_variables” statement
|
||||
void predetermined_variables(const vector<string> &symbol_list);
|
||||
//! Declares and initializes a local parameter
|
||||
void declare_and_init_model_local_variable(const string &name, expr_t rhs);
|
||||
//! Changes type of a symbol
|
||||
void change_type(SymbolType new_type, const vector<string> &var_list);
|
||||
void change_type(SymbolType new_type, const vector<string> &symbol_list);
|
||||
//! Adds a list of tags for the current equation
|
||||
void add_equation_tags(string key, string value);
|
||||
//! Adds a non-negative constant to DataTree
|
||||
|
@ -490,8 +487,8 @@ public:
|
|||
void option_str(string name_option, string opt);
|
||||
//! Sets an option to a date value
|
||||
void option_date(string name_option, string opt);
|
||||
//! Sets an option to a list of symbols (used in conjunction with add_in_symbol_list())
|
||||
void option_symbol_list(string name_option);
|
||||
//! Sets an option to a list of symbols
|
||||
void option_symbol_list(string name_option, vector<string> symbol_list);
|
||||
//! Sets an option to a vector of integers
|
||||
void option_vec_int(string name_option, vector<int> opt);
|
||||
//! Sets an option to a vector of strings
|
||||
|
@ -500,12 +497,10 @@ public:
|
|||
void option_vec_cellstr(string name_option, vector<string> opt);
|
||||
//! Indicates that the model is linear
|
||||
void linear();
|
||||
//! Adds a variable to temporary symbol list
|
||||
void add_in_symbol_list(const string &tmp_var);
|
||||
//! Writes a rplot() command
|
||||
void rplot();
|
||||
void rplot(vector<string> symbol_list);
|
||||
//! Writes a stock_simul command
|
||||
void stoch_simul();
|
||||
void stoch_simul(SymbolList symbol_list);
|
||||
//! Writes a trend component command
|
||||
void trend_component_model();
|
||||
//! Writes a var (vector autoregression) command
|
||||
|
@ -563,7 +558,7 @@ public:
|
|||
//! Sets the options for estimated correlation
|
||||
void set_corr_options(const string &name1, const string &name2, const string &subsample_name);
|
||||
//! Runs estimation process
|
||||
void run_estimation();
|
||||
void run_estimation(vector<string> symbol_list);
|
||||
//! Runs dynare_sensitivy()
|
||||
void dynare_sensitivity();
|
||||
//! Check that no observed variable has yet be defined
|
||||
|
@ -580,9 +575,7 @@ public:
|
|||
//! Svar_Identification Statement: match list of restrictions and equation number with lag
|
||||
void combine_lag_and_restriction(const string &lag);
|
||||
//! Svar_Identification Statement: match list of restrictions with equation number
|
||||
void add_restriction_in_equation(const string &equation);
|
||||
//! Svar_Identification Statement: add list of restriction symbol ids
|
||||
void add_in_svar_restriction_symbols(const string &tmp_var);
|
||||
void add_restriction_in_equation(const string &equation, const vector<string> &symbol_list);
|
||||
//! Svar_Identification Statement: add exclusions of constants
|
||||
void add_constants_exclusion();
|
||||
//! Svar_Identification Statement: add equation number for following restriction equations
|
||||
|
@ -612,7 +605,7 @@ public:
|
|||
void add_generate_irfs_element(string name);
|
||||
void add_generate_irfs_exog_element(string exo, const string &value);
|
||||
//! Forecast Statement
|
||||
void forecast();
|
||||
void forecast(vector<string> symbol_list);
|
||||
void set_trends();
|
||||
void set_deterministic_trends();
|
||||
void set_trend_element(string arg1, expr_t arg2);
|
||||
|
@ -624,10 +617,10 @@ public:
|
|||
void optim_weights();
|
||||
void set_optim_weights(string name, expr_t value);
|
||||
void set_optim_weights(const string &name1, const string &name2, expr_t value);
|
||||
void set_osr_params();
|
||||
void run_osr();
|
||||
void run_dynasave(const string &filename);
|
||||
void run_dynatype(const string &filename);
|
||||
void set_osr_params(vector<string> symbol_list);
|
||||
void run_osr(vector<string> symbol_list);
|
||||
void run_dynasave(const string &filename, vector<string> symbol_list);
|
||||
void run_dynatype(const string &filename, vector<string> symbol_list);
|
||||
void run_load_params_and_steady_state(const string &filename);
|
||||
void run_save_params_and_steady_state(const string &filename);
|
||||
void run_identification();
|
||||
|
@ -652,7 +645,7 @@ public:
|
|||
//! Ramsey constraint helper function
|
||||
void add_ramsey_constraint(const string &name, BinaryOpcode op_code, const expr_t rhs);
|
||||
//! Ramsey policy statement
|
||||
void ramsey_policy();
|
||||
void ramsey_policy(vector<string> symbol_list);
|
||||
//! Evaluate Planner Objective
|
||||
void evaluate_planner_objective();
|
||||
//! Set up Occbin
|
||||
|
@ -662,9 +655,9 @@ public:
|
|||
//! Run Occbin write XLS
|
||||
void occbin_write_regimes();
|
||||
//! Run plotting of Occbin results
|
||||
void occbin_graph();
|
||||
void occbin_graph(vector<string> symbol_list);
|
||||
//! Discretionary policy statement
|
||||
void discretionary_policy();
|
||||
void discretionary_policy(vector<string> symbol_list);
|
||||
//! Adds a write_latex_dynamic_model statement
|
||||
void write_latex_dynamic_model(bool write_equation_tags);
|
||||
//! Adds a write_latex_static_model statement
|
||||
|
@ -688,7 +681,7 @@ public:
|
|||
//! Markov Switching Statement: Probabilities
|
||||
void ms_compute_probabilities();
|
||||
//! Markov Switching Statement: IRF
|
||||
void ms_irf();
|
||||
void ms_irf(vector<string> symbol_list);
|
||||
//! Markov Switching Statement: Forecast
|
||||
void ms_forecast();
|
||||
//! Markov Switching Statement: Variance Decomposition
|
||||
|
@ -698,23 +691,23 @@ public:
|
|||
//! MarkovSwitching statement
|
||||
void markov_switching();
|
||||
//! Shock decomposition
|
||||
void shock_decomposition();
|
||||
void shock_decomposition(vector<string> symbol_list);
|
||||
//! Realtime Shock decomposition
|
||||
void realtime_shock_decomposition();
|
||||
void realtime_shock_decomposition(vector<string> symbol_list);
|
||||
//! Plot Shock decomposition
|
||||
void plot_shock_decomposition();
|
||||
void plot_shock_decomposition(vector<string> symbol_list);
|
||||
//! Initial Condition decomposition
|
||||
void initial_condition_decomposition();
|
||||
void initial_condition_decomposition(vector<string> symbol_list);
|
||||
//! squeeze_shock_decomposition statement
|
||||
void squeeze_shock_decomposition();
|
||||
void squeeze_shock_decomposition(vector<string> symbol_list);
|
||||
//! Conditional forecast statement
|
||||
void conditional_forecast();
|
||||
//! Conditional forecast paths block
|
||||
void conditional_forecast_paths();
|
||||
//! Plot conditional forecast statement
|
||||
void plot_conditional_forecast(const string &periods = "");
|
||||
void plot_conditional_forecast(const string &periods, vector<string> symbol_list);
|
||||
//! Smoother on calibrated models
|
||||
void calib_smoother();
|
||||
void calib_smoother(vector<string> symbol_list);
|
||||
//! Extended path
|
||||
void extended_path();
|
||||
//! Writes token "arg1=arg2" to model tree
|
||||
|
@ -847,19 +840,15 @@ public:
|
|||
//! Add an assignment equation in steady_state_model block
|
||||
void add_steady_state_model_equal(const string &varname, expr_t expr);
|
||||
//! Add a multiple assignment equation in steady_state_model block
|
||||
void add_steady_state_model_equal_multiple(expr_t expr);
|
||||
void add_steady_state_model_equal_multiple(const vector<string> &symbol_list, expr_t expr);
|
||||
//! Switches datatree
|
||||
void begin_trend();
|
||||
//! Declares a trend variable with its growth factor
|
||||
void declare_trend_var(bool log_trend, const string &name, const string &tex_name = "");
|
||||
//! Ends declaration of trend variable
|
||||
void end_trend_var(expr_t growth_factor);
|
||||
//! Declares a nonstationary variable with its deflator
|
||||
void declare_nonstationary_var(const string &name, const string &tex_name = "", const vector<pair<string, string>> &partition_value = {});
|
||||
void end_trend_var(bool log_trend, expr_t growth_factor, const vector<pair<string, string>> &symbol_list);
|
||||
//! Ends declaration of nonstationary variable
|
||||
void end_nonstationary_var(bool log_deflator, expr_t deflator);
|
||||
void end_nonstationary_var(bool log_deflator, expr_t deflator, const vector<tuple<string, string, vector<pair<string, string>>>> &symbol_list);
|
||||
//! Add a graph format to the list of formats requested
|
||||
void add_graph_format(const string &name);
|
||||
void add_graph_format(string name);
|
||||
//! Add the graph_format option to the OptionsList structure
|
||||
void process_graph_format_option();
|
||||
//! Add the graph_format option to the initial_condition_decomp substructure of the OptionsList structure
|
||||
|
@ -912,7 +901,7 @@ public:
|
|||
// Begin a model_replace statement
|
||||
void begin_model_replace(const vector<pair<string, string>> &listed_eqs_by_tags);
|
||||
// Add a var_remove statement
|
||||
void var_remove();
|
||||
void var_remove(const vector<string> &symbol_list);
|
||||
void begin_pac_target_info(string name);
|
||||
void end_pac_target_info();
|
||||
void set_pac_target_info_target(expr_t target);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright © 2003-2021 Dynare Team
|
||||
* Copyright © 2003-2022 Dynare Team
|
||||
*
|
||||
* This file is part of Dynare.
|
||||
*
|
||||
|
@ -21,21 +21,14 @@
|
|||
|
||||
#include "SymbolList.hh"
|
||||
|
||||
void
|
||||
SymbolList::setSymbolTable(const SymbolTable &symbol_table_arg)
|
||||
SymbolList::SymbolList(vector<string> symbols_arg) :
|
||||
symbols{move(symbols_arg)}
|
||||
{
|
||||
symbol_table = &symbol_table_arg;
|
||||
}
|
||||
|
||||
void
|
||||
SymbolList::addSymbol(const string &symbol)
|
||||
{
|
||||
symbols.push_back(symbol);
|
||||
}
|
||||
|
||||
void
|
||||
SymbolList::checkPass(WarningConsolidation &warnings,
|
||||
const vector<SymbolType> &types) const noexcept(false)
|
||||
SymbolList::checkPass(WarningConsolidation &warnings, const vector<SymbolType> &types,
|
||||
const SymbolTable &symbol_table) const noexcept(false)
|
||||
{
|
||||
if (types.empty())
|
||||
return;
|
||||
|
@ -51,7 +44,7 @@ SymbolList::checkPass(WarningConsolidation &warnings,
|
|||
regex re("^(" + regex_str +")");
|
||||
for (const auto &symbol : symbols)
|
||||
{
|
||||
if (!symbol_table->exists(symbol))
|
||||
if (!symbol_table.exists(symbol))
|
||||
{
|
||||
if (regex_search(symbol, m, re))
|
||||
{
|
||||
|
@ -66,7 +59,7 @@ SymbolList::checkPass(WarningConsolidation &warnings,
|
|||
|
||||
bool type_found = false;
|
||||
for (auto type : types)
|
||||
if (symbol_table->getType(symbol) == type)
|
||||
if (symbol_table.getType(symbol) == type)
|
||||
{
|
||||
type_found = true;
|
||||
break;
|
||||
|
@ -148,18 +141,6 @@ SymbolList::writeJsonOutput(ostream &output) const
|
|||
output << "]";
|
||||
}
|
||||
|
||||
void
|
||||
SymbolList::clear()
|
||||
{
|
||||
symbols.clear();
|
||||
}
|
||||
|
||||
int
|
||||
SymbolList::getSize() const
|
||||
{
|
||||
return symbols.size();
|
||||
}
|
||||
|
||||
vector<string>
|
||||
SymbolList::getSymbols() const
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright © 2003-2019 Dynare Team
|
||||
* Copyright © 2003-2022 Dynare Team
|
||||
*
|
||||
* This file is part of Dynare.
|
||||
*
|
||||
|
@ -35,10 +35,12 @@ using namespace std;
|
|||
class SymbolList
|
||||
{
|
||||
private:
|
||||
//! Internal container for symbol list
|
||||
vector<string> symbols;
|
||||
const SymbolTable *symbol_table;
|
||||
public:
|
||||
SymbolList() = default;
|
||||
// This constructor is deliberately not marked explicit, to allow implicit conversion
|
||||
SymbolList(vector<string> symbols_arg);
|
||||
|
||||
class SymbolListException
|
||||
{
|
||||
public:
|
||||
|
@ -47,14 +49,10 @@ public:
|
|||
{
|
||||
};
|
||||
};
|
||||
//! Set symbol table pointer
|
||||
void setSymbolTable(const SymbolTable &symbol_table_arg);
|
||||
//! Adds a symbol to the list
|
||||
void addSymbol(const string &symbol);
|
||||
//! Removed duplicate symbols
|
||||
//! Remove duplicate symbols
|
||||
void removeDuplicates(const string &dynare_command, WarningConsolidation &warnings);
|
||||
//! Check symbols to ensure variables have been declared and are endogenous
|
||||
void checkPass(WarningConsolidation &warnings, const vector<SymbolType> &types) const noexcept(false);
|
||||
void checkPass(WarningConsolidation &warnings, const vector<SymbolType> &types, const SymbolTable &symbol_table) const noexcept(false);
|
||||
//! Output content in Matlab format
|
||||
/*! Creates a string array for Matlab, stored in variable "varname" */
|
||||
void writeOutput(const string &varname, ostream &output) const;
|
||||
|
@ -62,22 +60,12 @@ public:
|
|||
void write(ostream &output) const;
|
||||
//! Write JSON output
|
||||
void writeJsonOutput(ostream &output) const;
|
||||
//! Clears all content
|
||||
void clear();
|
||||
//! Get a copy of the string vector
|
||||
vector<string>
|
||||
get_symbols() const
|
||||
{
|
||||
return symbols;
|
||||
};
|
||||
//! Is Empty
|
||||
int
|
||||
empty() const
|
||||
{
|
||||
return symbols.empty();
|
||||
};
|
||||
//! Return the number of Symbols contained in the list
|
||||
int getSize() const;
|
||||
//! Return the list of symbols
|
||||
vector<string> getSymbols() const;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue