Preprocessor iface to extended_path
parent
de80c3dade
commit
6fb2562f13
|
@ -2340,3 +2340,32 @@ CalibSmootherStatement::writeOutput(ostream &output, const string &basename) con
|
|||
<< "options_.order = 1;" << endl
|
||||
<< "dynare_estimation(var_list_);" << endl;
|
||||
}
|
||||
|
||||
ExtendedPathStatement::ExtendedPathStatement(const OptionsList &options_list_arg)
|
||||
: options_list(options_list_arg)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
ExtendedPathStatement::checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings)
|
||||
{
|
||||
if (options_list.num_options.find("periods") == options_list.num_options.end())
|
||||
{
|
||||
cerr << "ERROR: the 'periods' option of 'extended_path' is mandatory" << endl;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ExtendedPathStatement::writeOutput(ostream &output, const string &basename) const
|
||||
{
|
||||
// Beware: options do not have the same name in the interface and in the M code...
|
||||
|
||||
OptionsList::num_options_t::const_iterator it = options_list.num_options.find("solver_periods");
|
||||
if (it != options_list.num_options.end())
|
||||
output << "options_.ep.periods = " << it->second << ";" << endl;
|
||||
|
||||
output << "oo_.endo_simul = [ oo_.steady_state, extended_path([], " << options_list.num_options.find("periods")->second
|
||||
<< ") ];" << endl
|
||||
<< "oo_.exo_simul = oo_.ep.shocks;" << endl;
|
||||
}
|
||||
|
|
|
@ -519,6 +519,16 @@ public:
|
|||
virtual void writeOutput(ostream &output, const string &basename) const;
|
||||
};
|
||||
|
||||
class ExtendedPathStatement : public Statement
|
||||
{
|
||||
private:
|
||||
const OptionsList options_list;
|
||||
public:
|
||||
ExtendedPathStatement(const OptionsList &options_list_arg);
|
||||
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
|
||||
virtual void writeOutput(ostream &output, const string &basename) const;
|
||||
};
|
||||
|
||||
class SvarIdentificationStatement : public Statement
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -97,7 +97,7 @@ class ParsingDriver;
|
|||
%token BVAR_REPLIC BYTECODE
|
||||
%token CALIB_SMOOTHER CHANGE_TYPE CHECK CONDITIONAL_FORECAST CONDITIONAL_FORECAST_PATHS CONF_SIG CONSTANT CONTROLLED_VAREXO CORR COVAR CUTOFF
|
||||
%token DATAFILE FILE DOUBLING DR_ALGO DROP DSAMPLE DYNASAVE DYNATYPE CALIBRATION
|
||||
%token END ENDVAL EQUAL ESTIMATION ESTIMATED_PARAMS ESTIMATED_PARAMS_BOUNDS ESTIMATED_PARAMS_INIT
|
||||
%token END ENDVAL EQUAL ESTIMATION ESTIMATED_PARAMS ESTIMATED_PARAMS_BOUNDS ESTIMATED_PARAMS_INIT EXTENDED_PATH
|
||||
%token FILENAME FILTER_STEP_AHEAD FILTERED_VARS FIRST_OBS LAST_OBS SET_TIME
|
||||
%token <string_val> FLOAT_NUMBER
|
||||
%token DEFAULT FIXED_POINT
|
||||
|
@ -123,7 +123,7 @@ class ParsingDriver;
|
|||
%token <string_val> QUOTED_STRING
|
||||
%token QZ_CRITERIUM FULL DSGE_VAR DSGE_VARLAG DSGE_PRIOR_WEIGHT TRUNCATE
|
||||
%token RELATIVE_IRF REPLIC RPLOT SAVE_PARAMS_AND_STEADY_STATE PARAMETER_UNCERTAINTY
|
||||
%token SHOCKS SHOCK_DECOMPOSITION SIGMA_E SIMUL SIMUL_ALGO SIMUL_SEED SMOOTHER SQUARE_ROOT_SOLVER STACK_SOLVE_ALGO STEADY_STATE_MODEL SOLVE_ALGO
|
||||
%token SHOCKS SHOCK_DECOMPOSITION SIGMA_E SIMUL SIMUL_ALGO SIMUL_SEED SMOOTHER SQUARE_ROOT_SOLVER STACK_SOLVE_ALGO STEADY_STATE_MODEL SOLVE_ALGO SOLVER_PERIODS
|
||||
%token STDERR STEADY STOCH_SIMUL SYLVESTER SYLVESTER_FIXED_POINT_TOL REGIMES REGIME
|
||||
%token TEX RAMSEY_POLICY PLANNER_DISCOUNT DISCRETIONARY_POLICY DISCRETIONARY_TOL
|
||||
%token <string_val> TEX_NAME
|
||||
|
@ -269,6 +269,7 @@ statement : parameters
|
|||
| ms_irf
|
||||
| ms_variance_decomposition
|
||||
| calib_smoother
|
||||
| extended_path
|
||||
;
|
||||
|
||||
dsample : DSAMPLE INT_NUMBER ';'
|
||||
|
@ -2142,6 +2143,20 @@ calib_smoother_option : o_filtered_vars
|
|||
| o_datafile
|
||||
;
|
||||
|
||||
extended_path : EXTENDED_PATH ';'
|
||||
{ driver.extended_path(); }
|
||||
| EXTENDED_PATH '(' extended_path_options_list ')' ';'
|
||||
{ driver.extended_path(); }
|
||||
;
|
||||
|
||||
extended_path_options_list : extended_path_option COMMA extended_path_options_list
|
||||
| extended_path_option
|
||||
;
|
||||
|
||||
extended_path_option : o_periods
|
||||
| o_solver_periods
|
||||
;
|
||||
|
||||
o_dr_algo : DR_ALGO EQUAL INT_NUMBER {
|
||||
if (*$3 == string("0"))
|
||||
driver.warning("dr_algo option is now deprecated, and may be removed in a future version of Dynare");
|
||||
|
@ -2169,6 +2184,7 @@ o_irf_shocks : IRF_SHOCKS EQUAL '(' symbol_list ')' { driver.option_symbol_list(
|
|||
o_hp_filter : HP_FILTER EQUAL non_negative_number { driver.option_num("hp_filter", $3); };
|
||||
o_hp_ngrid : HP_NGRID EQUAL INT_NUMBER { driver.option_num("hp_ngrid", $3); };
|
||||
o_periods : PERIODS EQUAL INT_NUMBER { driver.option_num("periods", $3); };
|
||||
o_solver_periods : SOLVER_PERIODS EQUAL INT_NUMBER { driver.option_num("solver_periods", $3); };
|
||||
o_maxit : MAXIT EQUAL INT_NUMBER { driver.option_num("maxit_", $3); };
|
||||
o_cutoff : CUTOFF EQUAL non_negative_number { driver.cutoff($3); };
|
||||
o_markowitz : MARKOWITZ EQUAL non_negative_number { driver.option_num("markowitz", $3); };
|
||||
|
|
|
@ -183,6 +183,7 @@ string eofbuff;
|
|||
<INITIAL>homotopy_setup {BEGIN DYNARE_BLOCK; return token::HOMOTOPY_SETUP;}
|
||||
<INITIAL>conditional_forecast_paths {BEGIN DYNARE_BLOCK; return token::CONDITIONAL_FORECAST_PATHS;}
|
||||
<INITIAL>svar_identification {BEGIN DYNARE_BLOCK; return token::SVAR_IDENTIFICATION;}
|
||||
<INITIAL>extended_path {BEGIN DYNARE_BLOCK; return token::EXTENDED_PATH;}
|
||||
|
||||
/* For the semicolon after an "end" keyword */
|
||||
<INITIAL>; {return Dynare::parser::token_type (yytext[0]);}
|
||||
|
@ -463,6 +464,7 @@ string eofbuff;
|
|||
<DYNARE_STATEMENT>cova_compute {return token::COVA_COMPUTE;}
|
||||
<DYNARE_STATEMENT>discretionary_tol {return token::DISCRETIONARY_TOL;}
|
||||
<DYNARE_STATEMENT>analytic_derivation {return token::ANALYTIC_DERIVATION;}
|
||||
<DYNARE_STATEMENT>solver_periods {return token::SOLVER_PERIODS;}
|
||||
|
||||
<DYNARE_STATEMENT>[\$][^$]*[\$] {
|
||||
strtok(yytext+1, "$");
|
||||
|
|
|
@ -1940,6 +1940,13 @@ ParsingDriver::calib_smoother()
|
|||
options_list.clear();
|
||||
}
|
||||
|
||||
void
|
||||
ParsingDriver::extended_path()
|
||||
{
|
||||
mod_file->addStatement(new ExtendedPathStatement(options_list));
|
||||
options_list.clear();
|
||||
}
|
||||
|
||||
expr_t
|
||||
ParsingDriver::add_model_equal(expr_t arg1, expr_t arg2)
|
||||
{
|
||||
|
|
|
@ -516,6 +516,8 @@ public:
|
|||
void plot_conditional_forecast(string *periods = NULL);
|
||||
//! Smoother on calibrated models
|
||||
void calib_smoother();
|
||||
//! Extended path
|
||||
void extended_path();
|
||||
//! Writes token "arg1=arg2" to model tree
|
||||
expr_t add_model_equal(expr_t arg1, expr_t arg2);
|
||||
//! Writes token "arg=0" to model tree
|
||||
|
|
Loading…
Reference in New Issue