diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy index 5ceaaf03a8ed187ff56b9a97212eacce240dad15..08de7ab4bc2ee5b9793e2877ec5e5493f8c6c425 100644 --- a/preprocessor/DynareBison.yy +++ b/preprocessor/DynareBison.yy @@ -443,14 +443,14 @@ expression_or_empty : {$$ = driver.add_nan_constant();} | expression ; -initval : INITVAL ';' initval_list END +initval : INITVAL ';' initval_list END ';' { driver.end_initval(); } initval_file : INITVAL_FILE '(' FILENAME EQUAL filename ')' ';' { driver.initval_file($5); } ; -endval : ENDVAL ';' initval_list END { driver.end_endval(); }; +endval : ENDVAL ';' initval_list END ';' { driver.end_endval(); }; initval_list : initval_list initval_elem | initval_elem @@ -458,7 +458,7 @@ initval_list : initval_list initval_elem initval_elem : symbol EQUAL expression ';' { driver.init_val($1, $3); }; -histval : HISTVAL ';' histval_list END { driver.end_histval(); }; +histval : HISTVAL ';' histval_list END ';' { driver.end_histval(); }; histval_list : histval_list histval_elem | histval_elem @@ -480,9 +480,9 @@ model_options_list : model_options_list COMMA model_options ; model : MODEL ';' { driver.begin_model(); } - equation_list END { driver.reset_data_tree(); } + equation_list END ';' { driver.reset_data_tree(); } | MODEL '(' model_options_list ')' ';' { driver.begin_model(); } - equation_list END { driver.reset_data_tree(); } + equation_list END ';' { driver.reset_data_tree(); } ; equation_list : equation_list equation @@ -601,7 +601,7 @@ expectation_input : signed_integer pound_expression: '#' symbol EQUAL hand_side ';' { driver.declare_and_init_model_local_variable($2, $4); }; -shocks : SHOCKS ';' shock_list END { driver.end_shocks(); }; +shocks : SHOCKS ';' shock_list END ';' { driver.end_shocks(); }; shock_list : shock_list shock_elem | shock_elem @@ -622,7 +622,7 @@ det_shock_elem : VAR symbol ';' PERIODS period_list ';' VALUES value_list ';' { driver.add_det_shock($2, false); } ; -svar_identification : SVAR_IDENTIFICATION ';' svar_identification_list END +svar_identification : SVAR_IDENTIFICATION ';' svar_identification_list END ';' { driver.end_svar_identification(); } ; @@ -682,7 +682,7 @@ svar_options : o_coefficients | o_chain ; -mshocks : MSHOCKS ';' mshock_list END { driver.end_mshocks(); }; +mshocks : MSHOCKS ';' mshock_list END ';' { driver.end_mshocks(); }; mshock_list : mshock_list det_shock_elem | det_shock_elem @@ -897,7 +897,7 @@ signed_float : PLUS FLOAT_NUMBER | signed_integer ; -estimated_params : ESTIMATED_PARAMS ';' estimated_list END { driver.estimated_params(); }; +estimated_params : ESTIMATED_PARAMS ';' estimated_list END ';' { driver.estimated_params(); }; estimated_list : estimated_list estimated_elem { driver.add_estimated_params_element(); } @@ -993,7 +993,7 @@ estimated_elem3 : expression_or_empty COMMA expression_or_empty } ; -estimated_params_init : ESTIMATED_PARAMS_INIT ';' estimated_init_list END +estimated_params_init : ESTIMATED_PARAMS_INIT ';' estimated_init_list END ';' { driver.estimated_params_init(); }; estimated_init_list : estimated_init_list estimated_init_elem @@ -1027,7 +1027,7 @@ estimated_init_elem : STDERR symbol COMMA expression ';' } ; -estimated_params_bounds : ESTIMATED_PARAMS_BOUNDS ';' estimated_bounds_list END +estimated_params_bounds : ESTIMATED_PARAMS_BOUNDS ';' estimated_bounds_list END ';' { driver.estimated_params_bounds(); }; estimated_bounds_list : estimated_bounds_list estimated_bounds_elem @@ -1179,7 +1179,7 @@ varobs_list : varobs_list symbol { driver.add_varobs($1); } ; -observation_trends : OBSERVATION_TRENDS ';' trend_list END { driver.set_trends(); }; +observation_trends : OBSERVATION_TRENDS ';' trend_list END ';' { driver.set_trends(); }; trend_list : trend_list trend_element | trend_element @@ -1189,7 +1189,7 @@ trend_element : symbol '(' expression ')' ';' { driver.set_trend_element($1, $3 unit_root_vars : UNIT_ROOT_VARS symbol_list ';' { driver.set_unit_root_vars(); }; -optim_weights : OPTIM_WEIGHTS ';' optim_weights_list END { driver.optim_weights(); }; +optim_weights : OPTIM_WEIGHTS ';' optim_weights_list END ';' { driver.optim_weights(); }; optim_weights_list : optim_weights_list symbol expression ';' { driver.set_optim_weights($2, $3); } @@ -1213,7 +1213,7 @@ osr : OSR ';' {driver.run_osr(); } ; -calib_var : CALIB_VAR ';' calib_var_list END { driver.run_calib_var(); }; +calib_var : CALIB_VAR ';' calib_var_list END ';' { driver.run_calib_var(); }; calib_var_list : calib_var_list calib_arg1 | calib_arg1 @@ -1593,7 +1593,7 @@ shock_decomposition_option : o_parameters | o_labels ; -homotopy_setup: HOMOTOPY_SETUP ';' homotopy_list END +homotopy_setup: HOMOTOPY_SETUP ';' homotopy_list END ';' { driver.end_homotopy();}; homotopy_list : homotopy_item @@ -1647,7 +1647,7 @@ plot_conditional_forecast : PLOT_CONDITIONAL_FORECAST symbol_list ';' { driver.plot_conditional_forecast($5); } ; -conditional_forecast_paths : CONDITIONAL_FORECAST_PATHS ';' conditional_forecast_paths_shock_list END +conditional_forecast_paths : CONDITIONAL_FORECAST_PATHS ';' conditional_forecast_paths_shock_list END ';' { driver.conditional_forecast_paths(); } ; @@ -1660,7 +1660,7 @@ conditional_forecast_paths_shock_elem : VAR symbol ';' PERIODS period_list ';' V ; steady_state_model : STEADY_STATE_MODEL ';' { driver.begin_steady_state_model(); } - steady_state_equation_list END { driver.reset_data_tree(); } + steady_state_equation_list END ';' { driver.reset_data_tree(); } ; steady_state_equation_list : steady_state_equation_list steady_state_equation diff --git a/preprocessor/DynareFlex.ll b/preprocessor/DynareFlex.ll index b00a7ace92f9571c05c7851cae75c22391c04816..a9be762984b9afbc3137bdf82bd458dd31f5e5b9 100644 --- a/preprocessor/DynareFlex.ll +++ b/preprocessor/DynareFlex.ll @@ -174,8 +174,12 @@ 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;} + + /* For the semicolon after an "end" keyword */ +<INITIAL>; {return Dynare::parser::token_type (yytext[0]);} + /* End of a Dynare block */ -<DYNARE_BLOCK>end[ \t\n]*; {BEGIN INITIAL; return token::END;} +<DYNARE_BLOCK>end {BEGIN INITIAL; return token::END;} /* Inside of a Dynare statement */ <DYNARE_STATEMENT>datafile {return token::DATAFILE;}