From 78c72dad5f981c551c6934de2cd2468d947458d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= Date: Tue, 17 Jun 2014 16:03:30 +0200 Subject: [PATCH] Added the possibility to pass a dseries object to the data command (the user can manipulate the data in the mod file, using dseries class methods, and use them for estimation without writing the data on disk). --- ComputingTasks.cc | 12 ++++++++++-- DynareBison.yy | 4 +++- DynareFlex.ll | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ComputingTasks.cc b/ComputingTasks.cc index 25049b08..c23908a0 100644 --- a/ComputingTasks.cc +++ b/ComputingTasks.cc @@ -1876,9 +1876,17 @@ EstimationDataStatement::checkPass(ModFileStructure &mod_file_struct, WarningCon exit(EXIT_FAILURE); } - if (options_list.string_options.find("file") == options_list.string_options.end()) + if ((options_list.string_options.find("file") == options_list.string_options.end()) && + (options_list.string_options.find("series") == options_list.string_options.end())) { - cerr << "ERROR: The file option must be passed to the data statement." << endl; + cerr << "ERROR: The file or series option must be passed to the data statement." << endl; + exit(EXIT_FAILURE); + } + + if ((options_list.string_options.find("file") != options_list.string_options.end()) && + (options_list.string_options.find("series") != options_list.string_options.end())) + { + cerr << "ERROR: The file and series options cannot be used simultaneously in the data statement." << endl; exit(EXIT_FAILURE); } } diff --git a/DynareBison.yy b/DynareBison.yy index 5f3f336b..0c754a4b 100644 --- a/DynareBison.yy +++ b/DynareBison.yy @@ -90,7 +90,7 @@ class ParsingDriver; %token BVAR_REPLIC BYTECODE ALL_VALUES_REQUIRED %token CALIB_SMOOTHER CHANGE_TYPE CHECK CONDITIONAL_FORECAST CONDITIONAL_FORECAST_PATHS CONF_SIG CONSTANT CONTROLLED_VAREXO CORR COVAR CUTOFF CYCLE_REDUCTION LOGARITHMIC_REDUCTION %token CONSIDER_ALL_ENDOGENOUS CONSIDER_ONLY_OBSERVED -%token DATAFILE FILE DOUBLING DR_CYCLE_REDUCTION_TOL DR_LOGARITHMIC_REDUCTION_TOL DR_LOGARITHMIC_REDUCTION_MAXITER DR_ALGO DROP DSAMPLE DYNASAVE DYNATYPE CALIBRATION DIFFERENTIATE_FORWARD_VARS +%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 %token FILENAME FILTER_STEP_AHEAD FILTERED_VARS FIRST_OBS LAST_OBS SET_TIME %token FLOAT_NUMBER DATES @@ -1366,6 +1366,7 @@ data_options_list : data_options_list COMMA data_options ; data_options : o_file + | o_series | o_data_first_obs | o_data_last_obs | o_data_nobs @@ -2493,6 +2494,7 @@ o_simul_seed : SIMUL_SEED EQUAL INT_NUMBER { driver.error("'simul_seed' option i o_qz_criterium : QZ_CRITERIUM EQUAL non_negative_number { driver.option_num("qz_criterium", $3); }; o_qz_zero_threshold : QZ_ZERO_THRESHOLD EQUAL non_negative_number { driver.option_num("qz_zero_threshold", $3); }; o_file : FILE EQUAL filename { driver.option_str("file", $3); }; +o_series : SERIES EQUAL symbol { driver.option_str("series", $3); }; o_datafile : DATAFILE EQUAL filename { driver.option_str("datafile", $3); }; o_nobs : NOBS EQUAL vec_int { driver.option_vec_int("nobs", $3); } diff --git a/DynareFlex.ll b/DynareFlex.ll index 6ab6faab..a552f199 100644 --- a/DynareFlex.ll +++ b/DynareFlex.ll @@ -604,6 +604,7 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2 simul_replic {return token::SIMUL_REPLIC;} xls_sheet {return token::XLS_SHEET;} xls_range {return token::XLS_RANGE;} +series {return token::SERIES;} mh_recover {return token::MH_RECOVER;} planner_discount {return token::PLANNER_DISCOUNT;} calibration {return token::CALIBRATION;}