From 3e43b36cf353bee6e06b0581cd4a24b96a846d8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?D=C3=B3ra=20Kocsis?= <dora@dynare.org>
Date: Tue, 26 Nov 2019 17:18:08 +0100
Subject: [PATCH] Introduce forecast type option in shock_decomposition
 command. Dynare/dynare#1657

---
 src/DynareBison.yy | 7 ++++++-
 src/DynareFlex.ll  | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/DynareBison.yy b/src/DynareBison.yy
index f1a24547..47f7917a 100644
--- a/src/DynareBison.yy
+++ b/src/DynareBison.yy
@@ -113,7 +113,7 @@ class ParsingDriver;
 %token RELATIVE_IRF REPLIC SIMUL_REPLIC RPLOT SAVE_PARAMS_AND_STEADY_STATE PARAMETER_UNCERTAINTY TARGETS
 %token SHOCKS SHOCK_DECOMPOSITION SHOCK_GROUPS USE_SHOCK_GROUPS SIGMA_E SIMUL SIMUL_ALGO SIMUL_SEED ENDOGENOUS_TERMINAL_PERIOD
 %token SMOOTHER SMOOTHER2HISTVAL SQUARE_ROOT_SOLVER STACK_SOLVE_ALGO STEADY_STATE_MODEL SOLVE_ALGO SOLVER_PERIODS ROBUST_LIN_SOLVE
-%token STDERR STEADY STOCH_SIMUL SYLVESTER SYLVESTER_FIXED_POINT_TOL REGIMES REGIME REALTIME_SHOCK_DECOMPOSITION
+%token STDERR STEADY STOCH_SIMUL SYLVESTER SYLVESTER_FIXED_POINT_TOL REGIMES REGIME REALTIME_SHOCK_DECOMPOSITION CONDITIONAL UNCONDITIONAL
 %token TEX RAMSEY_MODEL RAMSEY_POLICY RAMSEY_CONSTRAINTS PLANNER_DISCOUNT DISCRETIONARY_POLICY DISCRETIONARY_TOL
 %token <string> TEX_NAME
 %token UNIFORM_PDF UNIT_ROOT_VARS USE_DLL USEAUTOCORR GSA_SAMPLE_FILE USE_UNIVARIATE_FILTERS_IF_SINGULARITY_IS_DETECTED
@@ -2793,6 +2793,7 @@ shock_decomposition_option : o_parameter_set
                            | o_first_obs
                            | o_nobs
                            | o_init_state
+			   | o_forecast_type
                            ;
 
 realtime_shock_decomposition_options_list : realtime_shock_decomposition_option COMMA realtime_shock_decomposition_options_list
@@ -3220,6 +3221,10 @@ o_posterior_nograph : POSTERIOR_NOGRAPH
           ;
 o_shock_decomposition_nograph : NOGRAPH { driver.option_num("no_graph.shock_decomposition", "true"); }
 o_init_state : INIT_STATE EQUAL INT_NUMBER { driver.option_num("shock_decomp.init_state", $3); };
+o_forecast_type : UNCONDITIONAL
+                  { driver.option_str("shock_decomp.forecast_type", "unconditional"); }
+                | CONDITIONAL
+                  { driver.option_str("shock_decomp.forecast_type", "conditional"); }
 o_shock_decomposition_presample : PRESAMPLE EQUAL INT_NUMBER { driver.option_num("shock_decomp.presample", $3); };
 o_shock_decomposition_forecast : FORECAST EQUAL INT_NUMBER { driver.option_num("shock_decomp.forecast", $3); };
 o_save_realtime : SAVE_REALTIME EQUAL vec_int { driver.option_vec_int("shock_decomp.save_realtime", $3); };
diff --git a/src/DynareFlex.ll b/src/DynareFlex.ll
index b24d6a2f..e88ebef1 100644
--- a/src/DynareFlex.ll
+++ b/src/DynareFlex.ll
@@ -611,6 +611,8 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]|w([1-9]{1}|[1-4][0-9]|5[0-2]))
 <DYNARE_STATEMENT>qoq {return token::QOQ; }
 <DYNARE_STATEMENT>yoy {return token::YOY; }
 <DYNARE_STATEMENT>aoa {return token::AOA; }
+<DYNARE_STATEMENT>unconditional {return token::UNCONDITIONAL; }
+<DYNARE_STATEMENT>conditional {return token::CONDITIONAL; }
 <DYNARE_STATEMENT>fig_name {return token::FIG_NAME;}
 <DYNARE_STATEMENT>write_xls {return token::WRITE_XLS;}
 <DYNARE_STATEMENT>realtime {return token::REALTIME;}
-- 
GitLab