diff --git a/src/DynareBison.yy b/src/DynareBison.yy index fb0bd08bf06d7fa022a760dcd4b8258cd85536a4..664939797b0900c3b3e8d322776b6c8452fdb5b5 100644 --- a/src/DynareBison.yy +++ b/src/DynareBison.yy @@ -222,6 +222,7 @@ str_tolower(string s) %token STATIC_MFS RELATIVE_TO_INITVAL MATCHED_IRFS MATCHED_IRFS_WEIGHTS WEIGHTS PERPENDICULAR %token HETEROGENEITY HETEROGENEITY_DIMENSION SUM PERFECT_FORESIGHT_CONTROLLED_PATHS EXOGENIZE ENDOGENIZE %token PRECONDITIONER UMFITER ITERSTACK ILU ITER_TOL ITER_MAXIT GMRES_RESTART ITERSTACK_MAXLU ITERSTACK_NPERIODS ITERSTACK_NLU ITERSTACK_RELU +CHECK_JACOBIAN_SINGULARITY %token <vector<string>> SYMBOL_VEC @@ -1595,6 +1596,7 @@ perfect_foresight_solver_options : o_stack_solve_algo | o_iterstack_nperiods | o_iterstack_nlu | o_iterstack_relu + | o_check_jacobian_singularity ; perfect_foresight_with_expectation_errors_setup : PERFECT_FORESIGHT_WITH_EXPECTATION_ERRORS_SETUP ';' @@ -4165,6 +4167,7 @@ o_iterstack_maxlu : ITERSTACK_MAXLU EQUAL INT_NUMBER { driver.option_num("simul o_iterstack_nperiods : ITERSTACK_NPERIODS EQUAL INT_NUMBER { driver.option_num("simul.iterstack_nperiods", $3); }; o_iterstack_nlu : ITERSTACK_NLU EQUAL INT_NUMBER { driver.option_num("simul.iterstack_nlu", $3); }; o_iterstack_relu : ITERSTACK_RELU EQUAL non_negative_number { driver.option_num("simul.iterstack_relu", $3); }; +o_check_jacobian_singularity : CHECK_JACOBIAN_SINGULARITY { driver.option_num("simul.check_jacobian_singularity", "true"); }; o_nocheck : NOCHECK { driver.option_num("steadystate.nocheck", "true"); }; o_controlled_varexo : CONTROLLED_VAREXO EQUAL '(' symbol_list ')' { driver.option_symbol_list("controlled_varexo", $4); }; diff --git a/src/DynareFlex.ll b/src/DynareFlex.ll index 659ed5e8f3f008d95028aadc7b76da9cce5aeffd..a9fef7ba639ea2518dee97268dab2728fe16b855 100644 --- a/src/DynareFlex.ll +++ b/src/DynareFlex.ll @@ -761,6 +761,7 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]|[sh][12]) <DYNARE_STATEMENT>iterstack_nperiods {return token::ITERSTACK_NPERIODS;} <DYNARE_STATEMENT>iterstack_nlu {return token::ITERSTACK_NLU;} <DYNARE_STATEMENT>iterstack_relu {return token::ITERSTACK_RELU;} +<DYNARE_STATEMENT>check_jacobian_singularity {return token::CHECK_JACOBIAN_SINGULARITY;} <DYNARE_STATEMENT>\$[^$]*\$ { yylval->emplace<string>(yytext + 1).pop_back();