diff --git a/src/DynareBison.yy b/src/DynareBison.yy index 78ba1a46..4d6a64f2 100644 --- a/src/DynareBison.yy +++ b/src/DynareBison.yy @@ -82,7 +82,7 @@ class ParsingDriver; %token COMMA CONSIDER_ALL_ENDOGENOUS CONSIDER_ONLY_OBSERVED INITIAL_CONDITION_DECOMPOSITION %token DATAFILE FILE SERIES DOUBLING DR_CYCLE_REDUCTION_TOL DR_LOGARITHMIC_REDUCTION_TOL DR_LOGARITHMIC_REDUCTION_MAXITER DR_ALGO DROP DSAMPLE DYNASAVE DYNATYPE CALIBRATION DIFFERENTIATE_FORWARD_VARS %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 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 FALSE FLOAT_NUMBER DATES %token DEFAULT FIXED_POINT FLIP OPT_ALGO COMPILATION_SETUP COMPILER ADD_FLAGS SUBSTITUTE_FLAGS ADD_LIBS SUBSTITUTE_LIBS @@ -91,6 +91,7 @@ class ParsingDriver; %token HISTVAL HISTVAL_FILE HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HOMOTOPY_FORCE_CONTINUE HP_FILTER HP_NGRID FILTERED_THEORETICAL_MOMENTS_GRID HYBRID ONE_SIDED_HP_FILTER %token IDENTIFICATION INF_CONSTANT INITVAL INITVAL_FILE BOUNDS JSCALE INIT INFILE INVARS %token INT_NUMBER +%token ZERO %token INV_GAMMA_PDF INV_GAMMA1_PDF INV_GAMMA2_PDF IRF IRF_SHOCKS IRF_PLOT_THRESHOLD IRF_CALIBRATION %token FAST_KALMAN_FILTER KALMAN_ALGO KALMAN_TOL DIFFUSE_KALMAN_TOL SCHUR_VEC_TOL SUBSAMPLES OPTIONS TOLF TOLX PLOT_INIT_DATE PLOT_END_DATE %token LAPLACE LIK_ALGO LIK_INIT LINEAR LINEAR_DECOMPOSITION LOAD_IDENT_FILES LOAD_MH_FILE LOAD_RESULTS_AFTER_LOAD_MH LOAD_PARAMS_AND_STEADY_STATE LOGLINEAR LOGDATA LYAPUNOV LINEAR_APPROXIMATION @@ -169,8 +170,8 @@ class ParsingDriver; %token HETEROSKEDASTIC_FILTER TIME_SHIFT /* Method of Moments */ %token METHOD_OF_MOMENTS MOM_METHOD -%token BARTLETT_KERNEL_LAG WEIGHTING_MATRIX WEIGHTING_MATRIX_SCALING_FACTOR ANALYTIC_STANDARD_ERRORS ANALYTIC_JACOBIAN PENALIZED_ESTIMATOR VERBOSE -%token SIMULATION_MULTIPLE MOM_SEED SEED BOUNDED_SHOCK_SUPPORT ADDITIONAL_OPTIMIZER_STEPS MOM_SE_TOLX SE_TOLX MOM_BURNIN BURNIN +%token BARTLETT_KERNEL_LAG WEIGHTING_MATRIX WEIGHTING_MATRIX_SCALING_FACTOR ANALYTIC_STANDARD_ERRORS ANALYTIC_JACOBIAN PENALIZED_ESTIMATOR VERBOSE +%token SIMULATION_MULTIPLE MOM_SEED SEED BOUNDED_SHOCK_SUPPORT ADDITIONAL_OPTIMIZER_STEPS MOM_SE_TOLX SE_TOLX MOM_BURNIN BURNIN %token EQTAGS STEADY_STATE_GROWTH %token ANALYTICAL_GIRF IRF_IN_PERCENT EMAS_GIRF EMAS_DROP EMAS_TOLF EMAS_MAX_ITER %token NO_IDENTIFICATION_STRENGTH NO_IDENTIFICATION_REDUCEDFORM NO_IDENTIFICATION_MOMENTS @@ -182,7 +183,7 @@ class ParsingDriver; %type expression expression_or_empty %type equation hand_side -%type non_negative_number signed_number signed_integer date_str +%type non_negative_number non_positive_integer signed_number signed_integer date_str %type filename symbol namespace_qualified_filename namespace_qualified_symbol %type vec_of_vec_value vec_value_list date_expr %type vec_value_1 vec_value signed_inf signed_number_w_inf @@ -449,7 +450,7 @@ var_expectation_model_option : VARIABLE EQUAL symbol { driver.option_str("model_name", $3); } | DISCOUNT EQUAL expression { driver.var_expectation_model_discount = $3; } - | TIME_SHIFT EQUAL signed_integer + | TIME_SHIFT EQUAL non_positive_integer { driver.option_num("time_shift", $3); } ; @@ -1551,6 +1552,14 @@ signed_integer : PLUS INT_NUMBER | INT_NUMBER ; +non_positive_integer : MINUS INT_NUMBER + { + $$ = $2; + $$.insert(0, "-"); + } + | ZERO + ; + non_negative_number : INT_NUMBER | FLOAT_NUMBER ; @@ -3822,7 +3831,7 @@ o_analytic_jacobian : ANALYTIC_JACOBIAN { driver.option_num("mom.analytic_jacobi o_mom_method : MOM_METHOD EQUAL GMM { driver.option_str("mom.mom_method", "GMM"); } | MOM_METHOD EQUAL SMM - { driver.option_str("mom.mom_method", "SMM"); } + { driver.option_str("mom.mom_method", "SMM"); } ; o_penalized_estimator : PENALIZED_ESTIMATOR { driver.option_num("mom.penalized_estimator", "true"); }; o_verbose : VERBOSE { driver.option_num("mom.verbose", "true"); }; diff --git a/src/DynareFlex.ll b/src/DynareFlex.ll index 4347d994..69b1c6b1 100644 --- a/src/DynareFlex.ll +++ b/src/DynareFlex.ll @@ -947,6 +947,11 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]) return token::FLOAT_NUMBER; } +(0|[-+]0) { + yylval->build(yytext); + return token::ZERO; +} + [0-9]+ { yylval->build(yytext); return token::INT_NUMBER;