From 98daf662aa86adca9358c60922e9cf443e854786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Fri, 7 Jun 2013 18:17:02 +0200 Subject: [PATCH] extended_path: new order and hybrid options (ref #152) Also add stub in the doc for the new options --- ComputingTasks.cc | 7 ++++--- DynareBison.yy | 8 ++++++-- DynareFlex.ll | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ComputingTasks.cc b/ComputingTasks.cc index 191f0a8c..101d139b 100644 --- a/ComputingTasks.cc +++ b/ComputingTasks.cc @@ -2440,9 +2440,10 @@ ExtendedPathStatement::writeOutput(ostream &output, const string &basename) cons { // 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; + for (OptionsList::num_options_t::const_iterator it = options_list.num_options.begin(); + it != options_list.num_options.end(); ++it) + if (it->first != string("periods")) + output << "options_." << it->first << " = " << it->second << ";" << endl; output << "oo_.endo_simul = [ oo_.steady_state, extended_path([], " << options_list.num_options.find("periods")->second << ") ];" << endl diff --git a/DynareBison.yy b/DynareBison.yy index 9a3bca1b..82044fc1 100644 --- a/DynareBison.yy +++ b/DynareBison.yy @@ -103,7 +103,7 @@ class ParsingDriver; %token DEFAULT FIXED_POINT %token FORECAST K_ORDER_SOLVER INSTRUMENTS PRIOR SHIFT MEAN STDEV VARIANCE MODE INTERVAL SHAPE DOMAINN %token GAMMA_PDF GRAPH GRAPH_FORMAT CONDITIONAL_VARIANCE_DECOMPOSITION NOCHECK STD -%token HISTVAL HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HOMOTOPY_FORCE_CONTINUE HP_FILTER HP_NGRID +%token HISTVAL HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HOMOTOPY_FORCE_CONTINUE HP_FILTER HP_NGRID HYBRID %token IDENTIFICATION INF_CONSTANT INITVAL INITVAL_FILE BOUNDS JSCALE INIT %token <string_val> INT_NUMBER %token <string_val> DATE_NUMBER @@ -2229,6 +2229,8 @@ extended_path_options_list : extended_path_option COMMA extended_path_options_li extended_path_option : o_periods | o_solver_periods + | o_extended_path_order + | o_hybrid ; model_diagnostics : MODEL_DIAGNOSTICS ';' @@ -2262,7 +2264,9 @@ 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_solver_periods : SOLVER_PERIODS EQUAL INT_NUMBER { driver.option_num("ep.periods", $3); }; +o_extended_path_order : ORDER EQUAL INT_NUMBER { driver.option_num("ep.stochastic.order", $3); }; +o_hybrid : HYBRID { driver.option_num("ep.stochastic.hybrid_order", "2"); }; o_maxit : MAXIT EQUAL INT_NUMBER { driver.option_num("maxit_", $3); }; o_solve_maxit : SOLVE_MAXIT EQUAL INT_NUMBER { driver.option_num("solve_maxit", $3); }; o_cutoff : CUTOFF EQUAL non_negative_number { driver.cutoff($3); }; diff --git a/DynareFlex.ll b/DynareFlex.ll index af1d867c..789a57f1 100644 --- a/DynareFlex.ll +++ b/DynareFlex.ll @@ -310,6 +310,7 @@ string eofbuff; <DYNARE_STATEMENT>cycle_reduction {return token::CYCLE_REDUCTION;} <DYNARE_STATEMENT>logarithmic_reduction {return token::LOGARITHMIC_REDUCTION;} <DYNARE_STATEMENT>use_univariate_filters_if_singularity_is_detected {return token::USE_UNIVARIATE_FILTERS_IF_SINGULARITY_IS_DETECTED;} +<DYNARE_STATEMENT>hybrid {return token::HYBRID;} <DYNARE_STATEMENT>default {return token::DEFAULT;} <DYNARE_STATEMENT>alpha { yylval->string_val = new string(yytext); -- GitLab