From 9274675efb6d28fb6b344c5b9ccb5a3117e57dd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Wed, 10 Feb 2021 16:18:22 +0100 Subject: [PATCH] Allow booleans in optimization options list Closes: #63 --- src/DynareBison.yy | 14 +++++++++++--- src/DynareFlex.ll | 8 ++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/DynareBison.yy b/src/DynareBison.yy index bbcaa96e..b33869cb 100644 --- a/src/DynareBison.yy +++ b/src/DynareBison.yy @@ -84,7 +84,7 @@ class ParsingDriver; %token END ENDVAL EQUAL ESTIMATION ESTIMATED_PARAMS ESTIMATED_PARAMS_BOUNDS ESTIMATED_PARAMS_INIT EXTENDED_PATH ENDOGENOUS_PRIOR EXPRESSION %token FILENAME DIRNAME FILTER_STEP_AHEAD FILTERED_VARS FIRST_OBS FIRST_SIMULATION_PERIOD LAST_OBS %token SET_TIME OSR_PARAMS_BOUNDS KEEP_KALMAN_ALGO_IF_SINGULARITY_IS_DETECTED -%token <string> FLOAT_NUMBER DATES +%token <string> FALSE FLOAT_NUMBER DATES %token DEFAULT FIXED_POINT FLIP OPT_ALGO COMPILATION_SETUP COMPILER ADD_FLAGS SUBSTITUTE_FLAGS ADD_LIBS SUBSTITUTE_LIBS %token FORECAST K_ORDER_SOLVER INSTRUMENTS SHIFT MEAN STDEV VARIANCE MODE INTERVAL SHAPE DOMAINN %token GAMMA_PDF GRAPH GRAPH_FORMAT CONDITIONAL_VARIANCE_DECOMPOSITION NOCHECK STD @@ -118,7 +118,7 @@ class ParsingDriver; %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 PLANNER_DISCOUNT_LATEX_NAME %token DISCRETIONARY_POLICY DISCRETIONARY_TOL EVALUATE_PLANNER_OBJECTIVE -%token <string> TEX_NAME +%token <string> TEX_NAME TRUE %token UNIFORM_PDF UNIT_ROOT_VARS USE_DLL USEAUTOCORR GSA_SAMPLE_FILE USE_UNIVARIATE_FILTERS_IF_SINGULARITY_IS_DETECTED %token VALUES VAR VAREXO VAREXO_DET VARIABLE VAROBS VAREXOBS PREDETERMINED_VARIABLES VAR_EXPECTATION VAR_EXPECTATION_MODEL PLOT_SHOCK_DECOMPOSITION MODEL_LOCAL_VARIABLE %token WRITE_LATEX_DYNAMIC_MODEL WRITE_LATEX_STATIC_MODEL WRITE_LATEX_ORIGINAL_MODEL WRITE_LATEX_STEADY_STATE_MODEL @@ -185,7 +185,7 @@ class ParsingDriver; %type <string> vec_of_vec_value vec_value_list date_expr %type <string> vec_value_1 vec_value signed_inf signed_number_w_inf %type <string> range vec_value_w_inf vec_value_1_w_inf -%type <string> integer_range signed_integer_range +%type <string> integer_range signed_integer_range boolean %type <string> sub_sampling_options list_sub_sampling_option %type <SymbolType> change_type_arg %type <vector<string>> vec_str vec_str_1 @@ -1502,6 +1502,10 @@ signed_number_w_inf : signed_inf | signed_number ; +boolean : TRUE + | FALSE + ; + estimated_params : ESTIMATED_PARAMS ';' estimated_list END ';' { driver.estimated_params(); }; estimated_list : estimated_list estimated_elem @@ -2014,6 +2018,8 @@ list_optim_option : QUOTED_STRING COMMA QUOTED_STRING { driver.optim_options_string($1, $3); } | QUOTED_STRING COMMA signed_number { driver.optim_options_num($1, $3); } + | QUOTED_STRING COMMA boolean + { driver.optim_options_num($1, $3); } ; optim_options : list_optim_option @@ -3872,6 +3878,8 @@ symbol : NAME | NONE | DR | PRIOR + | TRUE + | FALSE ; %% diff --git a/src/DynareFlex.ll b/src/DynareFlex.ll index fabfb87b..c6bd311c 100644 --- a/src/DynareFlex.ll +++ b/src/DynareFlex.ll @@ -805,6 +805,14 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]) <DYNARE_STATEMENT>coefficients {return token::COEFFICIENTS;} <DYNARE_STATEMENT>variances {return token::VARIANCES;} <DYNARE_STATEMENT>equations {return token::EQUATIONS;} +<DYNARE_STATEMENT>true { + yylval->build<string>(yytext); + return token::TRUE; +} +<DYNARE_STATEMENT>false { + yylval->build<string>(yytext); + return token::FALSE; +} <DYNARE_STATEMENT,DYNARE_BLOCK>\. {return Dynare::parser::token_type (yytext[0]);} <DYNARE_STATEMENT>\\ {return Dynare::parser::token_type (yytext[0]);} -- GitLab