New model_options statement
The purpose of this statement is to specify the options that apply to the whole model, when there are several “model” blocks, so as to restore the symmetry between those blocks (since otherwise one “model” block would typically bear the options, while the other ones would typically have no option). It still remains possible to specify the options on one “model” block, or even spread accross several ones. Closes: #19pac-components
parent
1f004584e9
commit
2d07186b8b
|
@ -183,7 +183,7 @@ class ParsingDriver;
|
|||
%token NO_IDENTIFICATION_STRENGTH NO_IDENTIFICATION_REDUCEDFORM NO_IDENTIFICATION_MOMENTS
|
||||
%token NO_IDENTIFICATION_MINIMAL NO_IDENTIFICATION_SPECTRUM NORMALIZE_JACOBIANS GRID_NBR
|
||||
%token TOL_RANK TOL_DERIV TOL_SV CHECKS_VIA_SUBSETS MAX_DIM_SUBSETS_GROUPS ZERO_MOMENTS_TOLERANCE
|
||||
%token MAX_NROWS SQUEEZE_SHOCK_DECOMPOSITION WITH_EPILOGUE MODEL_REMOVE MODEL_REPLACE
|
||||
%token MAX_NROWS SQUEEZE_SHOCK_DECOMPOSITION WITH_EPILOGUE MODEL_REMOVE MODEL_REPLACE MODEL_OPTIONS
|
||||
|
||||
%token <vector<string>> SYMBOL_VEC
|
||||
|
||||
|
@ -344,6 +344,7 @@ statement : parameters
|
|||
| occbin_constraints
|
||||
| model_remove
|
||||
| model_replace
|
||||
| model_options
|
||||
;
|
||||
|
||||
dsample : DSAMPLE INT_NUMBER ';'
|
||||
|
@ -939,21 +940,23 @@ occbin_constraints_regime_option : BIND hand_side ';'
|
|||
{ $$ = { "error_relax", $2 }; }
|
||||
;
|
||||
|
||||
model_options : BLOCK { driver.block(); }
|
||||
| o_cutoff
|
||||
| o_mfs
|
||||
| BYTECODE { driver.bytecode(); }
|
||||
| USE_DLL { driver.use_dll(); }
|
||||
| NO_STATIC { driver.no_static();}
|
||||
| DIFFERENTIATE_FORWARD_VARS { driver.differentiate_forward_vars_all(); }
|
||||
| DIFFERENTIATE_FORWARD_VARS EQUAL '(' symbol_list ')' { driver.differentiate_forward_vars_some(); }
|
||||
| o_linear
|
||||
| PARALLEL_LOCAL_FILES EQUAL '(' parallel_local_filename_list ')'
|
||||
| BALANCED_GROWTH_TEST_TOL EQUAL non_negative_number { driver.balanced_growth_test_tol($3); }
|
||||
;
|
||||
/* The tokens below must be accepted in both DYNARE_STATEMENT and DYNARE_BLOCK
|
||||
states in the lexer, because of model block and model_options statement */
|
||||
model_option : BLOCK { driver.block(); }
|
||||
| o_cutoff
|
||||
| o_mfs
|
||||
| BYTECODE { driver.bytecode(); }
|
||||
| USE_DLL { driver.use_dll(); }
|
||||
| NO_STATIC { driver.no_static();}
|
||||
| DIFFERENTIATE_FORWARD_VARS { driver.differentiate_forward_vars_all(); }
|
||||
| DIFFERENTIATE_FORWARD_VARS EQUAL '(' symbol_list ')' { driver.differentiate_forward_vars_some(); }
|
||||
| o_linear
|
||||
| PARALLEL_LOCAL_FILES EQUAL '(' parallel_local_filename_list ')'
|
||||
| BALANCED_GROWTH_TEST_TOL EQUAL non_negative_number { driver.balanced_growth_test_tol($3); }
|
||||
;
|
||||
|
||||
model_options_list : model_options_list COMMA model_options
|
||||
| model_options
|
||||
model_options_list : model_options_list COMMA model_option
|
||||
| model_option
|
||||
;
|
||||
|
||||
model : MODEL ';' { driver.begin_model(); }
|
||||
|
@ -1119,6 +1122,8 @@ model_replace : MODEL_REPLACE '(' tag_pair_list_for_selection ')' ';'
|
|||
equation_list END ';'
|
||||
{ driver.end_model(); };
|
||||
|
||||
model_options : MODEL_OPTIONS '(' model_options_list ')' ';'
|
||||
|
||||
tag_pair_list_for_selection : QUOTED_STRING
|
||||
{ $$ = { { "name", $1 } }; }
|
||||
| symbol EQUAL QUOTED_STRING
|
||||
|
|
|
@ -193,6 +193,7 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4])
|
|||
<INITIAL>perfect_foresight_with_expectation_errors_solver {BEGIN DYNARE_STATEMENT; return token::PERFECT_FORESIGHT_WITH_EXPECTATION_ERRORS_SOLVER;}
|
||||
<INITIAL>compilation_setup {BEGIN DYNARE_STATEMENT; return token::COMPILATION_SETUP;}
|
||||
<INITIAL>model_remove {BEGIN DYNARE_STATEMENT; return token::MODEL_REMOVE;}
|
||||
<INITIAL>model_options {BEGIN DYNARE_STATEMENT; return token::MODEL_OPTIONS;}
|
||||
|
||||
<DYNARE_STATEMENT>; {
|
||||
if (!sigma_e)
|
||||
|
@ -763,9 +764,9 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4])
|
|||
<DYNARE_BLOCK>corr {return token::CORR;}
|
||||
<DYNARE_BLOCK>periods {return token::PERIODS;}
|
||||
<DYNARE_BLOCK>scales {return token::SCALES;}
|
||||
<DYNARE_BLOCK>cutoff {return token::CUTOFF;}
|
||||
<DYNARE_BLOCK>mfs {return token::MFS;}
|
||||
<DYNARE_BLOCK>balanced_growth_test_tol {return token::BALANCED_GROWTH_TEST_TOL;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>cutoff {return token::CUTOFF;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>mfs {return token::MFS;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>balanced_growth_test_tol {return token::BALANCED_GROWTH_TEST_TOL;}
|
||||
<DYNARE_BLOCK>gamma_pdf {return token::GAMMA_PDF;}
|
||||
<DYNARE_BLOCK>beta_pdf {return token::BETA_PDF;}
|
||||
<DYNARE_BLOCK>normal_pdf {return token::NORMAL_PDF;}
|
||||
|
@ -881,13 +882,13 @@ DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4])
|
|||
<DYNARE_STATEMENT>\\ {return Dynare::parser::token_type (yytext[0]);}
|
||||
<DYNARE_STATEMENT>\' {return Dynare::parser::token_type (yytext[0]);}
|
||||
|
||||
<DYNARE_BLOCK>use_dll {return token::USE_DLL;}
|
||||
<DYNARE_BLOCK>block {return token::BLOCK;}
|
||||
<DYNARE_BLOCK>bytecode {return token::BYTECODE;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>use_dll {return token::USE_DLL;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>block {return token::BLOCK;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>bytecode {return token::BYTECODE;}
|
||||
<DYNARE_BLOCK>all_values_required {return token::ALL_VALUES_REQUIRED;}
|
||||
<DYNARE_BLOCK>no_static {return token::NO_STATIC;}
|
||||
<DYNARE_BLOCK>differentiate_forward_vars {return token::DIFFERENTIATE_FORWARD_VARS;}
|
||||
<DYNARE_BLOCK>parallel_local_files {return token::PARALLEL_LOCAL_FILES;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>no_static {return token::NO_STATIC;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>differentiate_forward_vars {return token::DIFFERENTIATE_FORWARD_VARS;}
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>parallel_local_files {return token::PARALLEL_LOCAL_FILES;}
|
||||
|
||||
<DYNARE_STATEMENT,DYNARE_BLOCK>linear {return token::LINEAR;}
|
||||
|
||||
|
|
Loading…
Reference in New Issue