Skip to content
Snippets Groups Projects
Commit abbddd58 authored by Johannes Pfeifer's avatar Johannes Pfeifer
Browse files

Add preprocessor options for GMM, SMM, IRFs

parent 51ee883f
No related branches found
No related tags found
No related merge requests found
...@@ -151,7 +151,7 @@ class ParsingDriver; ...@@ -151,7 +151,7 @@ class ParsingDriver;
%token VLISTLOG VLISTPER SPECTRAL_DENSITY %token VLISTLOG VLISTPER SPECTRAL_DENSITY
%token RESTRICTION RESTRICTION_FNAME CROSS_RESTRICTIONS NLAGS CONTEMP_REDUCED_FORM REAL_PSEUDO_FORECAST %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 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 GSIG2_LMDM Q_DIAG FLAT_PRIOR NCSK NSTD WEIBULL WEIBULL_PDF
%token INDXPARR INDXOVR INDXAP APBAND INDXIMF IMFBAND INDXFORE FOREBAND INDXGFOREHAT INDXGIMFHAT %token INDXPARR INDXOVR INDXAP APBAND INDXIMF IMFBAND INDXFORE FOREBAND INDXGFOREHAT INDXGIMFHAT
%token INDXESTIMA INDXGDLS EQ_MS FILTER_COVARIANCE FILTER_DECOMPOSITION SMOOTHED_STATE_UNCERTAINTY %token INDXESTIMA INDXGDLS EQ_MS FILTER_COVARIANCE FILTER_DECOMPOSITION SMOOTHED_STATE_UNCERTAINTY
...@@ -175,6 +175,10 @@ class ParsingDriver; ...@@ -175,6 +175,10 @@ class ParsingDriver;
%token PARAMETER_CONVERGENCE_CRITERION NUMBER_OF_LARGE_PERTURBATIONS NUMBER_OF_SMALL_PERTURBATIONS %token PARAMETER_CONVERGENCE_CRITERION NUMBER_OF_LARGE_PERTURBATIONS NUMBER_OF_SMALL_PERTURBATIONS
%token NUMBER_OF_POSTERIOR_DRAWS_AFTER_PERTURBATION MAX_NUMBER_OF_STAGES %token NUMBER_OF_POSTERIOR_DRAWS_AFTER_PERTURBATION MAX_NUMBER_OF_STAGES
%token RANDOM_FUNCTION_CONVERGENCE_CRITERION RANDOM_PARAMETER_CONVERGENCE_CRITERION %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 %token <vector_string_val> SYMBOL_VEC
%type <node_val> expression expression_or_empty %type <node_val> expression expression_or_empty
...@@ -1092,18 +1096,100 @@ perfect_foresight_solver_options : o_stack_solve_algo ...@@ -1092,18 +1096,100 @@ perfect_foresight_solver_options : o_stack_solve_algo
| o_pf_tolx | 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(); } { driver.gmm_estimation(); }
| GMM_ESTIMATION '(' ')' symbol_list ';' | GMM_ESTIMATION '(' gmm_estimation_options_list ')' symbol_list ';'
{ driver.gmm_estimation(); } { 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(); } { driver.smm_estimation(); }
| SMM_ESTIMATION '(' ')' symbol_list ';' | SMM_ESTIMATION '(' smm_estimation_options_list ')' symbol_list ';'
{ driver.smm_estimation(); } { 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 ')' ';' prior_function : PRIOR_FUNCTION '(' prior_posterior_function_options_list ')' ';'
{ driver.prior_posterior_function(true); } { driver.prior_posterior_function(true); }
; ;
...@@ -1180,6 +1266,14 @@ stoch_simul_primary_options : o_dr_algo ...@@ -1180,6 +1266,14 @@ stoch_simul_primary_options : o_dr_algo
| o_irf | o_irf
| o_irf_shocks | o_irf_shocks
| o_relative_irf | 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_filter
| o_hp_ngrid | o_hp_ngrid
| o_periods | o_periods
...@@ -1864,6 +1958,14 @@ estimation_options : o_datafile ...@@ -1864,6 +1958,14 @@ estimation_options : o_datafile
| o_keep_kalman_algo_if_singularity_is_detected | o_keep_kalman_algo_if_singularity_is_detected
| o_use_penalized_objective_for_hessian | o_use_penalized_objective_for_hessian
| o_rescale_prediction_error_covariance | 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 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 ...@@ -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_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 range : symbol ':' symbol
{ {
$1->append(":"); $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 ...@@ -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>silent_optimizer {return token::SILENT_OPTIMIZER;}
<DYNARE_STATEMENT>lmmcp {return token::LMMCP;} <DYNARE_STATEMENT>lmmcp {return token::LMMCP;}
<DYNARE_STATEMENT>occbin {return token::OCCBIN;} <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>[\$][^$]*[\$] { <DYNARE_STATEMENT>[\$][^$]*[\$] {
strtok(yytext+1, "$"); strtok(yytext+1, "$");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment