Add preprocessor options for GMM, SMM, IRFs
parent
471e0ff472
commit
254a73a406
|
@ -151,7 +151,7 @@ class ParsingDriver;
|
|||
%token VLISTLOG VLISTPER SPECTRAL_DENSITY
|
||||
%token RESTRICTION RESTRICTION_FNAME CROSS_RESTRICTIONS NLAGS CONTEMP_REDUCED_FORM REAL_PSEUDO_FORECAST
|
||||
%token DUMMY_OBS NSTATES INDXSCALESSTATES NO_BAYESIAN_PRIOR SPECIFICATION SIMS_ZHA
|
||||
%token <string_val> ALPHA BETA ABAND NINV CMS NCMS CNUM GAMMA INV_GAMMA INV_GAMMA1 INV_GAMMA2 NORMAL UNIFORM EPS PDF FIG DR NONE PRIOR PRIOR_VARIANCE HESSIAN IDENTITY_MATRIX DIRICHLET
|
||||
%token <string_val> ALPHA BETA ABAND NINV CMS NCMS CNUM GAMMA INV_GAMMA INV_GAMMA1 INV_GAMMA2 NORMAL UNIFORM EPS PDF FIG DR NONE PRIOR PRIOR_VARIANCE HESSIAN IDENTITY_MATRIX DIRICHLET DIAGONAL OPTIMAL
|
||||
%token GSIG2_LMDM Q_DIAG FLAT_PRIOR NCSK NSTD WEIBULL WEIBULL_PDF
|
||||
%token INDXPARR INDXOVR INDXAP APBAND INDXIMF IMFBAND INDXFORE FOREBAND INDXGFOREHAT INDXGIMFHAT
|
||||
%token INDXESTIMA INDXGDLS EQ_MS FILTER_COVARIANCE FILTER_DECOMPOSITION SMOOTHED_STATE_UNCERTAINTY
|
||||
|
@ -175,6 +175,10 @@ class ParsingDriver;
|
|||
%token PARAMETER_CONVERGENCE_CRITERION NUMBER_OF_LARGE_PERTURBATIONS NUMBER_OF_SMALL_PERTURBATIONS
|
||||
%token NUMBER_OF_POSTERIOR_DRAWS_AFTER_PERTURBATION MAX_NUMBER_OF_STAGES
|
||||
%token RANDOM_FUNCTION_CONVERGENCE_CRITERION RANDOM_PARAMETER_CONVERGENCE_CRITERION
|
||||
%token CENTERED_MOMENTS AUTOLAG RECURSIVE_ORDER_ESTIMATION BARTLETT_KERNEL_LAG WEIGHTING_MATRIX PENALIZED_ESTIMATOR VERBOSE
|
||||
%token SIMULATION_MULTIPLE SEED BOUNDED_SHOCK_SUPPORT
|
||||
%token ANALYTICAL_GIRF IRF_IN_PERCENT EMAS_GIRF EMAS_DROP EMAS_TOLF EMAS_MAX_ITER
|
||||
|
||||
%token <vector_string_val> SYMBOL_VEC
|
||||
|
||||
%type <node_val> expression expression_or_empty
|
||||
|
@ -1092,18 +1096,100 @@ perfect_foresight_solver_options : o_stack_solve_algo
|
|||
| o_pf_tolx
|
||||
;
|
||||
|
||||
gmm_estimation : GMM_ESTIMATION '(' ')' ';'
|
||||
gmm_smm_common_option : o_datafile
|
||||
| o_nobs
|
||||
| o_first_obs
|
||||
| o_optim
|
||||
| o_mode_file
|
||||
| o_mode_compute
|
||||
| o_prior_trunc
|
||||
| o_loglinear
|
||||
| o_logdata
|
||||
| o_relative_irf
|
||||
| o_irf
|
||||
| o_tex
|
||||
| o_xls_sheet
|
||||
| o_xls_range
|
||||
| o_solve_algo
|
||||
| o_plot_priors
|
||||
| o_aim_solver
|
||||
| o_selected_variables_only
|
||||
| o_irf_shocks
|
||||
| o_sylvester
|
||||
| o_sylvester_fixed_point_tol
|
||||
| o_lyapunov
|
||||
| o_lyapunov_fixed_point_tol
|
||||
| o_lyapunov_doubling_tol
|
||||
| o_dr
|
||||
| o_dr_cycle_reduction_tol
|
||||
| o_dr_logarithmic_reduction_tol
|
||||
| o_dr_logarithmic_reduction_maxiter
|
||||
| o_qz_zero_threshold
|
||||
| o_irf_plot_threshold
|
||||
| o_consider_all_endogenous
|
||||
| o_consider_only_observed
|
||||
| o_dirname
|
||||
| o_huge_number
|
||||
| o_silent_optimizer
|
||||
| o_nograph
|
||||
| o_nodisplay
|
||||
| o_graph_format
|
||||
| o_analytical_girf
|
||||
| o_irf_in_percent
|
||||
| o_emas_girf
|
||||
| o_emas_drop
|
||||
| o_emas_tolf
|
||||
| o_emas_max_iter
|
||||
| o_stderr_multiples
|
||||
| o_diagonal_only
|
||||
;
|
||||
|
||||
gmm_estimation : GMM_ESTIMATION '(' gmm_estimation_options_list ')' ';'
|
||||
{ driver.gmm_estimation(); }
|
||||
| GMM_ESTIMATION '(' ')' symbol_list ';'
|
||||
| GMM_ESTIMATION '(' gmm_estimation_options_list ')' symbol_list ';'
|
||||
{ driver.gmm_estimation(); }
|
||||
;
|
||||
|
||||
smm_estimation : SMM_ESTIMATION '(' ')' ';'
|
||||
gmm_estimation_options_list : gmm_estimation_option COMMA gmm_estimation_options_list
|
||||
| gmm_estimation_option
|
||||
;
|
||||
|
||||
gmm_estimation_option : gmm_smm_common_option
|
||||
| o_gmm_order
|
||||
| o_gmm_centered_moments
|
||||
| o_gmm_autolag
|
||||
| o_gmm_recursive_order_estimation
|
||||
| o_gmm_bartlett_kernel_lag
|
||||
| o_gmm_weighting_matrix
|
||||
| o_gmm_penalized_estimator
|
||||
| o_gmm_verbose
|
||||
;
|
||||
|
||||
smm_estimation : SMM_ESTIMATION '(' smm_estimation_options_list ')' ';'
|
||||
{ driver.smm_estimation(); }
|
||||
| SMM_ESTIMATION '(' ')' symbol_list ';'
|
||||
| SMM_ESTIMATION '(' smm_estimation_options_list ')' symbol_list ';'
|
||||
{ driver.smm_estimation(); }
|
||||
;
|
||||
|
||||
smm_estimation_options_list : smm_estimation_option COMMA smm_estimation_options_list
|
||||
| smm_estimation_option
|
||||
;
|
||||
|
||||
smm_estimation_option : gmm_smm_common_option
|
||||
| o_smm_order
|
||||
| o_smm_centered_moments
|
||||
| o_smm_autolag
|
||||
| o_smm_recursive_order_estimation
|
||||
| o_smm_bartlett_kernel_lag
|
||||
| o_smm_weighting_matrix
|
||||
| o_smm_penalized_estimator
|
||||
| o_smm_verbose
|
||||
| o_smm_simulation_multiple
|
||||
| o_smm_drop
|
||||
| o_smm_seed
|
||||
| o_smm_bounded_shock_support
|
||||
;
|
||||
|
||||
prior_function : PRIOR_FUNCTION '(' prior_posterior_function_options_list ')' ';'
|
||||
{ driver.prior_posterior_function(true); }
|
||||
;
|
||||
|
@ -1180,6 +1266,14 @@ stoch_simul_primary_options : o_dr_algo
|
|||
| o_irf
|
||||
| o_irf_shocks
|
||||
| o_relative_irf
|
||||
| o_analytical_girf
|
||||
| o_irf_in_percent
|
||||
| o_emas_girf
|
||||
| o_emas_drop
|
||||
| o_emas_tolf
|
||||
| o_emas_max_iter
|
||||
| o_stderr_multiples
|
||||
| o_diagonal_only
|
||||
| o_hp_filter
|
||||
| o_hp_ngrid
|
||||
| o_periods
|
||||
|
@ -1864,6 +1958,14 @@ estimation_options : o_datafile
|
|||
| o_keep_kalman_algo_if_singularity_is_detected
|
||||
| o_use_penalized_objective_for_hessian
|
||||
| o_rescale_prediction_error_covariance
|
||||
| o_analytical_girf
|
||||
| o_irf_in_percent
|
||||
| o_emas_girf
|
||||
| o_emas_drop
|
||||
| o_emas_tolf
|
||||
| o_emas_max_iter
|
||||
| o_stderr_multiples
|
||||
| o_diagonal_only
|
||||
;
|
||||
|
||||
list_optim_option : QUOTED_STRING COMMA QUOTED_STRING
|
||||
|
@ -3417,6 +3519,59 @@ o_use_shock_groups : USE_SHOCK_GROUPS { driver.option_str("plot_shock_decomp.use
|
|||
;
|
||||
o_colormap : COLORMAP EQUAL symbol { driver.option_num("plot_shock_decomp.colormap",$3); };
|
||||
|
||||
o_gmm_order : ORDER EQUAL INT_NUMBER { driver.option_num("gmm.order", $3); };
|
||||
o_smm_order : ORDER EQUAL INT_NUMBER { driver.option_num("smm.order", $3); };
|
||||
o_gmm_centered_moments : CENTERED_MOMENTS { driver.option_num("gmm.centered_moments", "1"); };
|
||||
o_smm_centered_moments : CENTERED_MOMENTS { driver.option_num("smm.centered_moments", "1"); };
|
||||
o_gmm_autolag : AUTOLAG EQUAL vec_int
|
||||
{ driver.option_vec_int("gmm.autolag", $3); }
|
||||
| AUTOLAG EQUAL vec_int_number
|
||||
{ driver.option_vec_int("gmm.autolag", $3); }
|
||||
;
|
||||
o_smm_autolag : AUTOLAG EQUAL vec_int
|
||||
{ driver.option_vec_int("smm.autolag", $3); }
|
||||
| AUTOLAG EQUAL vec_int_number
|
||||
{ driver.option_vec_int("smm.autolag", $3); }
|
||||
;
|
||||
o_gmm_recursive_order_estimation : RECURSIVE_ORDER_ESTIMATION { driver.option_num("gmm.recursive_estimation", "1"); };
|
||||
o_smm_recursive_order_estimation : RECURSIVE_ORDER_ESTIMATION { driver.option_num("smm.recursive_estimation", "1"); };
|
||||
o_gmm_bartlett_kernel_lag : BARTLETT_KERNEL_LAG EQUAL INT_NUMBER { driver.option_num("gmm.qLag", $3); };
|
||||
o_smm_bartlett_kernel_lag : BARTLETT_KERNEL_LAG EQUAL INT_NUMBER { driver.option_num("smm.qLag", $3); };
|
||||
o_gmm_weighting_matrix : WEIGHTING_MATRIX EQUAL OPTIMAL
|
||||
{ driver.option_str("gmm.weighting_matrix", $3); }
|
||||
| WEIGHTING_MATRIX EQUAL IDENTITY_MATRIX
|
||||
{ driver.option_str("gmm.weighting_matrix", $3); }
|
||||
| WEIGHTING_MATRIX EQUAL DIAGONAL
|
||||
{ driver.option_str("gmm.weighting_matrix", $3); }
|
||||
| WEIGHTING_MATRIX EQUAL filename
|
||||
{ driver.option_str("gmm.weighting_matrix", $3); }
|
||||
;
|
||||
o_smm_weighting_matrix : WEIGHTING_MATRIX EQUAL OPTIMAL
|
||||
{ driver.option_str("smm.weighting_matrix", $3); }
|
||||
| WEIGHTING_MATRIX EQUAL IDENTITY_MATRIX
|
||||
{ driver.option_str("smm.weighting_matrix", $3); }
|
||||
| WEIGHTING_MATRIX EQUAL DIAGONAL
|
||||
{ driver.option_str("smm.weighting_matrix", $3); }
|
||||
| WEIGHTING_MATRIX EQUAL filename
|
||||
{ driver.option_str("smm.weighting_matrix", $3); }
|
||||
;
|
||||
o_gmm_penalized_estimator : PENALIZED_ESTIMATOR { driver.option_num("gmm.penalized_estimator", "1"); };
|
||||
o_smm_penalized_estimator : PENALIZED_ESTIMATOR { driver.option_num("smm.penalized_estimator", "1"); };
|
||||
o_gmm_verbose : VERBOSE { driver.option_num("gmm.verbose", "1"); };
|
||||
o_smm_verbose : VERBOSE { driver.option_num("smm.verbose", "1"); };
|
||||
|
||||
o_smm_simulation_multiple : SIMULATION_MULTIPLE EQUAL INT_NUMBER { driver.option_num("smm.simulation_multiple", $3); };
|
||||
o_smm_drop : DROP EQUAL INT_NUMBER { driver.option_num("smm.drop", $3); };
|
||||
o_smm_seed : SEED EQUAL INT_NUMBER { driver.option_num("smm.seed", $3); };
|
||||
o_smm_bounded_shock_support : BOUNDED_SHOCK_SUPPORT { driver.option_num("smm.bounded_support", "1"); };
|
||||
|
||||
o_analytical_girf : ANALYTICAL_GIRF { driver.option_num("irf_opt.analytical_GIRF", "1"); };
|
||||
o_irf_in_percent : IRF_IN_PERCENT { driver.option_num("irf_opt.percent", "1"); };
|
||||
o_emas_girf : EMAS_GIRF { driver.option_num("irf_opt.ergodic_mean_irf", "1"); };
|
||||
o_emas_drop : EMAS_DROP EQUAL INT_NUMBER { driver.option_num("irf_opt.EM.drop", $3); };
|
||||
o_emas_tolf : EMAS_TOLF EQUAL non_negative_number { driver.option_num("irf_opt.EM.tolf", $3); };
|
||||
o_emas_max_iter : EMAS_MAX_ITER EQUAL INT_NUMBER { driver.option_num("irf_opt.EM.iter", $3); };
|
||||
|
||||
range : symbol ':' symbol
|
||||
{
|
||||
$1->append(":");
|
||||
|
|
|
@ -633,6 +633,30 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
|
|||
<DYNARE_STATEMENT>silent_optimizer {return token::SILENT_OPTIMIZER;}
|
||||
<DYNARE_STATEMENT>lmmcp {return token::LMMCP;}
|
||||
<DYNARE_STATEMENT>occbin {return token::OCCBIN;}
|
||||
<DYNARE_STATEMENT>centered_moments {return token::CENTERED_MOMENTS; }
|
||||
<DYNARE_STATEMENT>autolag {return token::AUTOLAG; }
|
||||
<DYNARE_STATEMENT>recursive_order_estimation {return token::RECURSIVE_ORDER_ESTIMATION; }
|
||||
<DYNARE_STATEMENT>bartlett_kernel_lag {return token::BARTLETT_KERNEL_LAG; }
|
||||
<DYNARE_STATEMENT>optimal {
|
||||
yylval->string_val = new string(yytext);
|
||||
return token::OPTIMAL;
|
||||
}
|
||||
<DYNARE_STATEMENT>diagonal {
|
||||
yylval->string_val = new string(yytext);
|
||||
return token::DIAGONAL;
|
||||
}
|
||||
<DYNARE_STATEMENT>weighting_matrix {return token::WEIGHTING_MATRIX; }
|
||||
<DYNARE_STATEMENT>penalized_estimator {return token::PENALIZED_ESTIMATOR; }
|
||||
<DYNARE_STATEMENT>verbose {return token::VERBOSE; }
|
||||
<DYNARE_STATEMENT>simulation_multiple {return token::SIMULATION_MULTIPLE; }
|
||||
<DYNARE_STATEMENT>seed {return token::SEED; }
|
||||
<DYNARE_STATEMENT>bounded_shock_support {return token::BOUNDED_SHOCK_SUPPORT; }
|
||||
<DYNARE_STATEMENT>analytical_girf {return token::ANALYTICAL_GIRF; }
|
||||
<DYNARE_STATEMENT>irf_in_percent {return token::IRF_IN_PERCENT; }
|
||||
<DYNARE_STATEMENT>emas_girf {return token::EMAS_GIRF; }
|
||||
<DYNARE_STATEMENT>emas_drop {return token::EMAS_DROP; }
|
||||
<DYNARE_STATEMENT>emas_tolf {return token::EMAS_TOLF; }
|
||||
<DYNARE_STATEMENT>emas_max_iter {return token::EMAS_MAX_ITER; }
|
||||
|
||||
<DYNARE_STATEMENT>[\$][^$]*[\$] {
|
||||
strtok(yytext+1, "$");
|
||||
|
|
Loading…
Reference in New Issue