/* -*- C++ -*- */ /* * Copyright © 2003-2022 Dynare Team * * This file is part of Dynare. * * Dynare is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Dynare is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Dynare. If not, see . */ %{ #include #include "ParsingDriver.hh" using namespace std; // Announce to Flex the prototype we want for lexing function #define YY_DECL \ Dynare::parser::token_type \ DynareFlex::lex(Dynare::parser::semantic_type *yylval, \ Dynare::parser::location_type *yylloc, \ ParsingDriver &driver) // Shortcut to access tokens defined by Bison using token = Dynare::parser::token; /* By default yylex returns int, we use token_type. Unfortunately yyterminate by default returns 0, which is not of token_type. */ #define yyterminate() return Dynare::parser::token_type (0); int comment_caller, line_caller; /* Particular value : when sigma_e command is found this flag is set to 1, when command finished it is set to 0 */ int sigma_e = 0; string eofbuff; %} %option c++ %option prefix="Dynare" %option case-insensitive noyywrap batch debug never-interactive /* NB: if new start conditions are defined, add them in the line for <> */ %x COMMENT %x DYNARE_STATEMENT %x DYNARE_BLOCK %x VERBATIM_BLOCK %x NATIVE %x NATIVE_COMMENT %x DATES_STATEMENT %x LINE1 %x LINE2 %x LINE3 %{ // Increments location counter for every token read #define YY_USER_ACTION location_increment(yylloc, yytext); %} DATE -?[0-9]+([ya]|m([1-9]|1[0-2])|q[1-4]) %% /* Code put at the beginning of yylex() */ %{ // Reset location before reading token yylloc->step(); %} /* Rules for matching $line directives */ <*>^@#line\ \" { line_caller = YYSTATE; BEGIN(LINE1); } [^\"]* { filename = yytext; BEGIN(LINE2); } \" BEGIN(LINE3); [0-9]+ { yylloc->begin.line = yylloc->end.line = atoi(yytext) - 1; BEGIN(line_caller); } /* spaces, tabs and carriage returns are ignored */ [[:space:]]+ { yylloc->step(); } /* Comments */ %.* "//".* "/*" {comment_caller = YY_START; BEGIN COMMENT;} "*/" {BEGIN comment_caller;} . /* Begin of a Dynare statement */ var {BEGIN DYNARE_STATEMENT; return token::VAR;} varexo {BEGIN DYNARE_STATEMENT; return token::VAREXO;} varexo_det {BEGIN DYNARE_STATEMENT; return token::VAREXO_DET;} trend_var {BEGIN DYNARE_STATEMENT; return token::TREND_VAR;} log_trend_var {BEGIN DYNARE_STATEMENT; return token::LOG_TREND_VAR;} predetermined_variables {BEGIN DYNARE_STATEMENT; return token::PREDETERMINED_VARIABLES;} parameters {BEGIN DYNARE_STATEMENT; return token::PARAMETERS;} model_local_variable {BEGIN DYNARE_STATEMENT; return token::MODEL_LOCAL_VARIABLE;} periods {BEGIN DYNARE_STATEMENT; return token::PERIODS;} model_info {BEGIN DYNARE_STATEMENT; return token::MODEL_INFO;} estimation {BEGIN DYNARE_STATEMENT; return token::ESTIMATION;} set_time {BEGIN DYNARE_STATEMENT; return token::SET_TIME;} data {BEGIN DYNARE_STATEMENT; return token::DATA;} varobs {BEGIN DYNARE_STATEMENT; return token::VAROBS;} varexobs {BEGIN DYNARE_STATEMENT; return token::VAREXOBS;} unit_root_vars {BEGIN DYNARE_STATEMENT; return token::UNIT_ROOT_VARS;} rplot {BEGIN DYNARE_STATEMENT; return token::RPLOT;} osr_params {BEGIN DYNARE_STATEMENT; return token::OSR_PARAMS;} osr {BEGIN DYNARE_STATEMENT; return token::OSR;} dynatype {BEGIN DYNARE_STATEMENT; return token::DYNATYPE;} dynasave {BEGIN DYNARE_STATEMENT; return token::DYNASAVE;} model_comparison {BEGIN DYNARE_STATEMENT; return token::MODEL_COMPARISON;} change_type {BEGIN DYNARE_STATEMENT; return token::CHANGE_TYPE;} load_params_and_steady_state {BEGIN DYNARE_STATEMENT; return token::LOAD_PARAMS_AND_STEADY_STATE;} save_params_and_steady_state {BEGIN DYNARE_STATEMENT; return token::SAVE_PARAMS_AND_STEADY_STATE;} write_latex_dynamic_model {BEGIN DYNARE_STATEMENT; return token::WRITE_LATEX_DYNAMIC_MODEL;} write_latex_static_model {BEGIN DYNARE_STATEMENT; return token::WRITE_LATEX_STATIC_MODEL;} write_latex_original_model {BEGIN DYNARE_STATEMENT; return token::WRITE_LATEX_ORIGINAL_MODEL;} write_latex_steady_state_model {BEGIN DYNARE_STATEMENT; return token::WRITE_LATEX_STEADY_STATE_MODEL;} steady {BEGIN DYNARE_STATEMENT; return token::STEADY;} check {BEGIN DYNARE_STATEMENT; return token::CHECK;} simul {BEGIN DYNARE_STATEMENT; return token::SIMUL;} stoch_simul {BEGIN DYNARE_STATEMENT; return token::STOCH_SIMUL;} var_model {BEGIN DYNARE_STATEMENT; return token::VAR_MODEL;} trend_component_model {BEGIN DYNARE_STATEMENT; return token::TREND_COMPONENT_MODEL;} var_expectation_model {BEGIN DYNARE_STATEMENT; return token::VAR_EXPECTATION_MODEL;} pac_model {BEGIN DYNARE_STATEMENT; return token::PAC_MODEL;} dsample {BEGIN DYNARE_STATEMENT; return token::DSAMPLE;} Sigma_e {BEGIN DYNARE_STATEMENT; sigma_e = 1; return token::SIGMA_E;} planner_objective {BEGIN DYNARE_STATEMENT; return token::PLANNER_OBJECTIVE;} ramsey_model {BEGIN DYNARE_STATEMENT; return token::RAMSEY_MODEL;} ramsey_policy {BEGIN DYNARE_STATEMENT; return token::RAMSEY_POLICY;} evaluate_planner_objective {BEGIN DYNARE_STATEMENT; return token::EVALUATE_PLANNER_OBJECTIVE;} occbin_setup {BEGIN DYNARE_STATEMENT; return token::OCCBIN_SETUP;} occbin_solver {BEGIN DYNARE_STATEMENT; return token::OCCBIN_SOLVER;} occbin_write_regimes {BEGIN DYNARE_STATEMENT; return token::OCCBIN_WRITE_REGIMES;} occbin_graph {BEGIN DYNARE_STATEMENT; return token::OCCBIN_GRAPH;} discretionary_policy {BEGIN DYNARE_STATEMENT; return token::DISCRETIONARY_POLICY;} identification {BEGIN DYNARE_STATEMENT; return token::IDENTIFICATION;} bvar_density {BEGIN DYNARE_STATEMENT; return token::BVAR_DENSITY; } bvar_forecast {BEGIN DYNARE_STATEMENT; return token::BVAR_FORECAST; } dynare_sensitivity {BEGIN DYNARE_STATEMENT; return token::DYNARE_SENSITIVITY;} initval_file {BEGIN DYNARE_STATEMENT; return token::INITVAL_FILE;} histval_file {BEGIN DYNARE_STATEMENT; return token::HISTVAL_FILE;} forecast {BEGIN DYNARE_STATEMENT; return token::FORECAST;} shock_decomposition {BEGIN DYNARE_STATEMENT; return token::SHOCK_DECOMPOSITION;} realtime_shock_decomposition {BEGIN DYNARE_STATEMENT; return token::REALTIME_SHOCK_DECOMPOSITION;} plot_shock_decomposition {BEGIN DYNARE_STATEMENT; return token::PLOT_SHOCK_DECOMPOSITION;} initial_condition_decomposition {BEGIN DYNARE_STATEMENT; return token::INITIAL_CONDITION_DECOMPOSITION;} squeeze_shock_decomposition {BEGIN DYNARE_STATEMENT; return token::SQUEEZE_SHOCK_DECOMPOSITION;} sbvar {BEGIN DYNARE_STATEMENT; return token::SBVAR;} ms_estimation {BEGIN DYNARE_STATEMENT; return token::MS_ESTIMATION;} ms_simulation {BEGIN DYNARE_STATEMENT; return token::MS_SIMULATION;} ms_compute_mdd {BEGIN DYNARE_STATEMENT; return token::MS_COMPUTE_MDD;} ms_compute_probabilities {BEGIN DYNARE_STATEMENT; return token::MS_COMPUTE_PROBABILITIES;} ms_forecast {BEGIN DYNARE_STATEMENT; return token::MS_FORECAST;} ms_irf {BEGIN DYNARE_STATEMENT; return token::MS_IRF;} ms_variance_decomposition {BEGIN DYNARE_STATEMENT; return token::MS_VARIANCE_DECOMPOSITION;} conditional_forecast {BEGIN DYNARE_STATEMENT; return token::CONDITIONAL_FORECAST;} plot_conditional_forecast {BEGIN DYNARE_STATEMENT; return token::PLOT_CONDITIONAL_FORECAST;} method_of_moments {BEGIN DYNARE_STATEMENT; return token::METHOD_OF_MOMENTS;} markov_switching {BEGIN DYNARE_STATEMENT; return token::MARKOV_SWITCHING;} svar {BEGIN DYNARE_STATEMENT; return token::SVAR;} svar_global_identification_check {BEGIN DYNARE_STATEMENT; return token::SVAR_GLOBAL_IDENTIFICATION_CHECK;} external_function {BEGIN DYNARE_STATEMENT; return token::EXTERNAL_FUNCTION;} /* End of a Dynare statement */ calib_smoother { BEGIN DYNARE_STATEMENT; return token::CALIB_SMOOTHER; } model_diagnostics {BEGIN DYNARE_STATEMENT; return token::MODEL_DIAGNOSTICS;} extended_path {BEGIN DYNARE_STATEMENT; return token::EXTENDED_PATH;} smoother2histval {BEGIN DYNARE_STATEMENT; return token::SMOOTHER2HISTVAL;} perfect_foresight_setup {BEGIN DYNARE_STATEMENT; return token::PERFECT_FORESIGHT_SETUP;} perfect_foresight_solver {BEGIN DYNARE_STATEMENT; return token::PERFECT_FORESIGHT_SOLVER;} perfect_foresight_with_expectation_errors_setup {BEGIN DYNARE_STATEMENT; return token::PERFECT_FORESIGHT_WITH_EXPECTATION_ERRORS_SETUP;} perfect_foresight_with_expectation_errors_solver {BEGIN DYNARE_STATEMENT; return token::PERFECT_FORESIGHT_WITH_EXPECTATION_ERRORS_SOLVER;} compilation_setup {BEGIN DYNARE_STATEMENT; return token::COMPILATION_SETUP;} model_remove {BEGIN DYNARE_STATEMENT; return token::MODEL_REMOVE;} model_options {BEGIN DYNARE_STATEMENT; return token::MODEL_OPTIONS;} var_remove {BEGIN DYNARE_STATEMENT; return token::VAR_REMOVE;} resid {BEGIN DYNARE_STATEMENT; return token::RESID;} ; { if (!sigma_e) BEGIN INITIAL; return Dynare::parser::token_type (yytext[0]); } /* Begin of a Dynare block */ model {BEGIN DYNARE_BLOCK; return token::MODEL;} steady_state_model {BEGIN DYNARE_BLOCK; return token::STEADY_STATE_MODEL;} initval {BEGIN DYNARE_BLOCK; return token::INITVAL;} endval {BEGIN DYNARE_BLOCK; return token::ENDVAL;} histval {BEGIN DYNARE_BLOCK; return token::HISTVAL;} filter_initial_state {BEGIN DYNARE_BLOCK; return token::FILTER_INITIAL_STATE;} shocks {BEGIN DYNARE_BLOCK; return token::SHOCKS;} heteroskedastic_shocks {BEGIN DYNARE_BLOCK; return token::HETEROSKEDASTIC_SHOCKS;} shock_groups {BEGIN DYNARE_BLOCK; return token::SHOCK_GROUPS;} init2shocks {BEGIN DYNARE_BLOCK; return token::INIT2SHOCKS;} mshocks {BEGIN DYNARE_BLOCK; return token::MSHOCKS;} estimated_params {BEGIN DYNARE_BLOCK; return token::ESTIMATED_PARAMS;} epilogue {BEGIN DYNARE_BLOCK; return token::EPILOGUE;} /* priors is an alias for estimated_params */ priors {BEGIN DYNARE_BLOCK;return token::ESTIMATED_PARAMS;} estimated_params_init {BEGIN DYNARE_BLOCK; return token::ESTIMATED_PARAMS_INIT;} estimated_params_bounds {BEGIN DYNARE_BLOCK; return token::ESTIMATED_PARAMS_BOUNDS;} estimated_params_remove {BEGIN DYNARE_BLOCK; return token::ESTIMATED_PARAMS_REMOVE;} osr_params_bounds {BEGIN DYNARE_BLOCK; return token::OSR_PARAMS_BOUNDS;} observation_trends {BEGIN DYNARE_BLOCK; return token::OBSERVATION_TRENDS;} deterministic_trends {BEGIN DYNARE_BLOCK; return token::DETERMINISTIC_TRENDS;} optim_weights {BEGIN DYNARE_BLOCK; return token::OPTIM_WEIGHTS;} homotopy_setup {BEGIN DYNARE_BLOCK; return token::HOMOTOPY_SETUP;} conditional_forecast_paths {BEGIN DYNARE_BLOCK; return token::CONDITIONAL_FORECAST_PATHS;} svar_identification {BEGIN DYNARE_BLOCK; return token::SVAR_IDENTIFICATION;} moment_calibration {BEGIN DYNARE_BLOCK; return token::MOMENT_CALIBRATION;} irf_calibration {BEGIN DYNARE_BLOCK; return token::IRF_CALIBRATION;} ramsey_constraints {BEGIN DYNARE_BLOCK; return token::RAMSEY_CONSTRAINTS;} generate_irfs {BEGIN DYNARE_BLOCK; return token::GENERATE_IRFS;} matched_moments {BEGIN DYNARE_BLOCK; return token::MATCHED_MOMENTS;} occbin_constraints {BEGIN DYNARE_BLOCK; return token::OCCBIN_CONSTRAINTS;} model_replace {BEGIN DYNARE_BLOCK; return token::MODEL_REPLACE;} pac_target_info {BEGIN DYNARE_BLOCK; return token::PAC_TARGET_INFO;} /* For the semicolon after an "end" keyword */ ; {return Dynare::parser::token_type (yytext[0]);} /* End of a Dynare block */ end {BEGIN INITIAL; return token::END;} subsamples {return token::SUBSAMPLES;} options {return token::OPTIONS;} prior { yylval->build(yytext); return token::PRIOR; } std {BEGIN DYNARE_STATEMENT; return token::STD;} corr {BEGIN DYNARE_STATEMENT; return token::CORR;} function {return token::FUNCTION;} sampling_draws {return token::SAMPLING_DRAWS;} prior_function {BEGIN DYNARE_STATEMENT; return token::PRIOR_FUNCTION;} posterior_function {BEGIN DYNARE_STATEMENT; return token::POSTERIOR_FUNCTION;} /* Inside of a Dynare statement */ {DATE} { char *yycopy = strdup(yytext); char *uput = yycopy + yyleng; unput(')'); unput('\''); while (uput > yycopy) unput(*--uput); unput('\''); unput('('); unput('s'); unput('e'); unput('t'); unput('a'); unput('d'); free( yycopy ); } ${DATE} { yylloc->step(); #if (YY_FLEX_MAJOR_VERSION > 2) || (YY_FLEX_MAJOR_VERSION == 2 && YY_FLEX_MINOR_VERSION >= 6) yyout << yytext + 1; #else *yyout << yytext + 1; #endif } dates {dates_parens_nb=0; BEGIN DATES_STATEMENT; yylval->build("dates");} file {return token::FILE;} datafile {return token::DATAFILE;} dirname {return token::DIRNAME;} nobs {return token::NOBS;} last_obs {return token::LAST_OBS;} first_obs {return token::FIRST_OBS;} mean {return token::MEAN;} stdev {return token::STDEV;} truncate {return token::TRUNCATE;} domain {return token::DOMAINN;} // Use altered token name to avoid identifier collision on Windows and macOS variance {return token::VARIANCE;} mode {return token::MODE;} interval {return token::INTERVAL;} shape {return token::SHAPE;} shift {return token::SHIFT;} bounds {return token::BOUNDS;} init {return token::INIT;} jscale {return token::JSCALE;} prefilter {return token::PREFILTER;} presample {return token::PRESAMPLE;} lik_algo {return token::LIK_ALGO;} lik_init {return token::LIK_INIT;} taper_steps {return token::TAPER_STEPS;} geweke_interval {return token::GEWEKE_INTERVAL;} raftery_lewis_qrs {return token::RAFTERY_LEWIS_QRS;} raftery_lewis_diagnostics {return token::RAFTERY_LEWIS_DIAGNOSTICS;} graph {return token::GRAPH;} nograph {return token::NOGRAPH;} posterior_graph {return token::POSTERIOR_GRAPH;} posterior_nograph {return token::POSTERIOR_NOGRAPH;} nodisplay {return token::NODISPLAY;} graph_format {return token::GRAPH_FORMAT;} eps {yylval->build(yytext); return token::EPS;} pdf {yylval->build(yytext); return token::PDF;} fig {yylval->build(yytext); return token::FIG;} none {yylval->build(yytext); return token::NONE;} print {return token::PRINT;} noprint {return token::NOPRINT;} conf_sig {return token::CONF_SIG;} mh_conf_sig {return token::MH_CONF_SIG;} mh_replic {return token::MH_REPLIC;} mh_drop {return token::MH_DROP;} mh_jscale {return token::MH_JSCALE;} mh_init_scale {return token::MH_INIT_SCALE;} mh_init_scale_factor {return token::MH_INIT_SCALE_FACTOR;} mh_tune_jscale {return token::MH_TUNE_JSCALE;} mh_tune_guess {return token::MH_TUNE_GUESS;} mode_file {return token::MODE_FILE;} mode_compute {return token::MODE_COMPUTE;} mode_check {return token::MODE_CHECK;} mode_check_neighbourhood_size {return token::MODE_CHECK_NEIGHBOURHOOD_SIZE;} mode_check_symmetric_plots {return token::MODE_CHECK_SYMMETRIC_PLOTS;} mode_check_number_of_points {return token::MODE_CHECK_NUMBER_OF_POINTS;} prior_trunc {return token::PRIOR_TRUNC;} mh_posterior_mode_estimation {return token::MH_POSTERIOR_MODE_ESTIMATION;} mh_nblocks {return token::MH_NBLOCKS;} load_mh_file {return token::LOAD_MH_FILE;} load_results_after_load_mh {return token::LOAD_RESULTS_AFTER_LOAD_MH;} loglinear {return token::LOGLINEAR;} linear_approximation {return token::LINEAR_APPROXIMATION;} logdata {return token::LOGDATA;} nodiagnostic {return token::NODIAGNOSTIC;} kalman_algo {return token::KALMAN_ALGO;} fast_kalman_filter {return token::FAST_KALMAN_FILTER;} kalman_tol {return token::KALMAN_TOL;} schur_vec_tol {return token::SCHUR_VEC_TOL;} diffuse_kalman_tol {return token::DIFFUSE_KALMAN_TOL;} forecast {return token::FORECAST;} smoother {return token::SMOOTHER;} bayesian_irf {return token::BAYESIAN_IRF;} dsge_var {return token::DSGE_VAR;} dsge_varlag {return token::DSGE_VARLAG;} moments_varendo {return token::MOMENTS_VARENDO;} contemporaneous_correlation {return token::CONTEMPORANEOUS_CORRELATION;} posterior_max_subsample_draws {return token::POSTERIOR_MAX_SUBSAMPLE_DRAWS;} filtered_vars {return token::FILTERED_VARS;} filter_step_ahead {return token::FILTER_STEP_AHEAD;} relative_irf {return token::RELATIVE_IRF;} tex {return token::TEX;} nomoments {return token::NOMOMENTS;} std {return token::STD;} corr {return token::CORR;} nocorr {return token::NOCORR;} optim {return token::OPTIM;} periods {return token::PERIODS;} model_name {return token::MODEL_NAME;} auxiliary_model_name {return token::AUXILIARY_MODEL_NAME;} endogenous_terminal_period {return token::ENDOGENOUS_TERMINAL_PERIOD;} sub_draws {return token::SUB_DRAWS;} minimal_solving_periods {return token::MINIMAL_SOLVING_PERIODS;} markowitz {return token::MARKOWITZ;} marginal_density {return token::MARGINAL_DENSITY;} laplace {return token::LAPLACE;} modifiedharmonicmean {return token::MODIFIEDHARMONICMEAN;} constant {return token::CONSTANT;} noconstant {return token::NOCONSTANT;} filename {return token::FILENAME;} conditional_likelihood {return token::CONDITIONAL_LIKELIHOOD;} diffuse_filter {return token::DIFFUSE_FILTER;} plot_priors {return token::PLOT_PRIORS;} aim_solver {return token::AIM_SOLVER;} partial_information {return token::PARTIAL_INFORMATION;} conditional_variance_decomposition {return token::CONDITIONAL_VARIANCE_DECOMPOSITION;} name {return token::EXT_FUNC_NAME;} nargs {return token::EXT_FUNC_NARGS;} first_deriv_provided {return token::FIRST_DERIV_PROVIDED;} second_deriv_provided {return token::SECOND_DERIV_PROVIDED;} freq {return token::FREQ;} monthly {return token::MONTHLY; } quarterly {return token::QUARTERLY; } initial_year {return token::INITIAL_YEAR;} initial_subperiod {return token::INITIAL_SUBPERIOD;} final_year {return token::FINAL_YEAR;} final_subperiod {return token::FINAL_SUBPERIOD;} vlist {return token::VLIST;} vlistlog {return token::VLISTLOG;} vlistper {return token::VLISTPER;} keep_kalman_algo_if_singularity_is_detected {return token::KEEP_KALMAN_ALGO_IF_SINGULARITY_IS_DETECTED;} restriction_fname {return token::RESTRICTION_FNAME;} nlags {return token::NLAGS;} restrictions {return token::RESTRICTIONS;} adl {return token::ADL;} diff {return token::DIFF;} cross_restrictions {return token::CROSS_RESTRICTIONS;} contemp_reduced_form {return token::CONTEMP_REDUCED_FORM;} real_pseudo_forecast {return token::REAL_PSEUDO_FORECAST;} no_bayesian_prior {return token::NO_BAYESIAN_PRIOR;} dummy_obs {return token::DUMMY_OBS;} spectral_density {return token::SPECTRAL_DENSITY;} nstates {return token::NSTATES;} indxscalesstates {return token::INDXSCALESSTATES;} fixed_point {return token::FIXED_POINT;} doubling {return token::DOUBLING;} plot_init_date {return token::PLOT_INIT_DATE;} plot_end_date {return token::PLOT_END_DATE;} square_root_solver {return token::SQUARE_ROOT_SOLVER;} cycle_reduction {return token::CYCLE_REDUCTION;} logarithmic_reduction {return token::LOGARITHMIC_REDUCTION;} use_univariate_filters_if_singularity_is_detected {return token::USE_UNIVARIATE_FILTERS_IF_SINGULARITY_IS_DETECTED;} hybrid {return token::HYBRID;} default {return token::DEFAULT;} init2shocks {return token::INIT2SHOCKS;} number_of_particles {return token::NUMBER_OF_PARTICLES;} resampling {return token::RESAMPLING;} systematic {return token::SYSTEMATIC;} generic {return token::GENERIC;} resampling_threshold {return token::RESAMPLING_THRESHOLD;} resampling_method {return token::RESAMPLING_METHOD;} kitagawa {return token::KITAGAWA;} smooth {return token::SMOOTH;} stratified {return token::STRATIFIED;} cpf_weights {return token::CPF_WEIGHTS;} amisanotristani {return token::AMISANOTRISTANI;} murrayjonesparslow {return token::MURRAYJONESPARSLOW;} filter_algorithm {return token::FILTER_ALGORITHM;} nonlinear_filter_initialization {return token::NONLINEAR_FILTER_INITIALIZATION;} proposal_approximation {return token::PROPOSAL_APPROXIMATION;} cubature {return token::CUBATURE;} unscented {return token::UNSCENTED;} montecarlo {return token::MONTECARLO;} distribution_approximation {return token::DISTRIBUTION_APPROXIMATION;} proposal_distribution {return token::PROPOSAL_DISTRIBUTION;} no_posterior_kernel_density {return token::NO_POSTERIOR_KERNEL_DENSITY;} rescale_prediction_error_covariance {return token::RESCALE_PREDICTION_ERROR_COVARIANCE;} use_penalized_objective_for_hessian {return token::USE_PENALIZED_OBJECTIVE_FOR_HESSIAN;} expression {return token::EXPRESSION;} first_simulation_period {return token::FIRST_SIMULATION_PERIOD;} last_simulation_period {return token::LAST_SIMULATION_PERIOD;} no_init_estimation_check_first_obs {return token::NO_INIT_ESTIMATION_CHECK_FIRST_OBS;} fsolve_options {return token::FSOLVE_OPTIONS;} alpha { yylval->build(yytext); return token::ALPHA; } beta { yylval->build(yytext); return token::BETA; } gamma { yylval->build(yytext); return token::GAMMA; } inv_gamma { yylval->build(yytext); return token::INV_GAMMA; } inv_gamma1 { yylval->build(yytext); return token::INV_GAMMA1; } inv_gamma2 { yylval->build(yytext); return token::INV_GAMMA2; } dirichlet { yylval->build(yytext); return token::DIRICHLET; } weibull { yylval->build(yytext); return token::WEIBULL; } normal { yylval->build(yytext); return token::NORMAL; } uniform { yylval->build(yytext); return token::UNIFORM; } gsig2_lmdm {return token::GSIG2_LMDM;} specification {return token::SPECIFICATION;} sims_zha {return token::SIMS_ZHA;} q_diag {return token::Q_DIAG;} flat_prior {return token::FLAT_PRIOR;} ncsk {return token::NCSK;} nstd {return token::NSTD;} ninv { yylval->build(yytext); return token::NINV; } indxparr {return token::INDXPARR;} indxovr {return token::INDXOVR;} aband { yylval->build(yytext); return token::ABAND; } write_equation_tags {return token::WRITE_EQUATION_TAGS;} eqtags {return token::EQTAGS;} targets {return token::TARGETS;} indxap {return token::INDXAP;} apband {return token::APBAND;} indximf {return token::INDXIMF;} indxfore {return token::INDXFORE;} foreband {return token::FOREBAND;} indxgforehat {return token::INDXGFOREHAT;} indxgimfhat {return token::INDXGIMFHAT;} indxestima {return token::INDXESTIMA;} indxgdls {return token::INDXGDLS;} eq_ms {return token::EQ_MS;} cms { yylval->build(yytext); return token::CMS; } ncms { yylval->build(yytext); return token::NCMS; } eq_cms {return token::EQ_CMS;} tlindx {return token::TLINDX;} tlnumber {return token::TLNUMBER;} cnum { yylval->build(yytext); return token::CNUM; } nodecomposition {return token::NODECOMPOSITION;}; use_calibration {return token::USE_CALIBRATION;} output_file_tag {return token::OUTPUT_FILE_TAG;} file_tag {return token::FILE_TAG;}; no_create_init {return token::NO_CREATE_INIT;}; simulation_file_tag {return token::SIMULATION_FILE_TAG;}; horizon {return token::HORIZON;} parameter_uncertainty {return token::PARAMETER_UNCERTAINTY;} no_error_bands {return token::NO_ERROR_BANDS;} error_band_percentiles {return token::ERROR_BAND_PERCENTILES;} shock_draws {return token::SHOCK_DRAWS;} shocks_per_parameter {return token::SHOCKS_PER_PARAMETER;} thinning_factor {return token::THINNING_FACTOR;} free_parameters {return token::FREE_PARAMETERS;} median {return token::MEDIAN;} regime {return token::REGIME;} regimes {return token::REGIMES;} data_obs_nbr {return token::DATA_OBS_NBR;} filtered_probabilities {return token::FILTERED_PROBABILITIES;} real_time_smoothed {return token::REAL_TIME_SMOOTHED;} proposal_type {return token::PROPOSAL_TYPE;} proposal_lower_bound {return token::PROPOSAL_LOWER_BOUND;} proposal_upper_bound {return token::PROPOSAL_UPPER_BOUND;} proposal_draws {return token::PROPOSAL_DRAWS;} use_mean_center {return token::USE_MEAN_CENTER;} adaptive_mh_draws {return token::ADAPTIVE_MH_DRAWS;} coefficients_prior_hyperparameters {return token::COEFFICIENTS_PRIOR_HYPERPARAMETERS;} convergence_starting_value {return token::CONVERGENCE_STARTING_VALUE;} convergence_ending_value {return token::CONVERGENCE_ENDING_VALUE;} convergence_increment_value {return token::CONVERGENCE_INCREMENT_VALUE;} max_iterations_starting_value {return token::MAX_ITERATIONS_STARTING_VALUE;} max_iterations_increment_value {return token::MAX_ITERATIONS_INCREMENT_VALUE;} max_block_iterations {return token::MAX_BLOCK_ITERATIONS;} max_repeated_optimization_runs {return token::MAX_REPEATED_OPTIMIZATION_RUNS;} maxit {return token::MAXIT;} simul_maxit {return token::SIMUL_MAXIT;} likelihood_maxit {return token::LIKELIHOOD_MAXIT;} smoother_maxit {return token::SMOOTHER_MAXIT;} simul_periods {return token::SIMUL_PERIODS;} likelihood_periods {return token::LIKELIHOOD_PERIODS;} smoother_periods {return token::SMOOTHER_PERIODS;} simul_curb_retrench {return token::SIMUL_CURB_RETRENCH;} likelihood_curb_retrench {return token::LIKELIHOOD_CURB_RETRENCH;} smoother_curb_retrench {return token::SMOOTHER_CURB_RETRENCH;} simul_check_ahead_periods {return token::SIMUL_CHECK_AHEAD_PERIODS;} simul_max_check_ahead_periods {return token::SIMUL_MAX_CHECK_AHEAD_PERIODS;} simul_reset_check_ahead_periods {return token::SIMUL_RESET_CHECK_AHEAD_PERIODS;} likelihood_check_ahead_periods {return token::LIKELIHOOD_CHECK_AHEAD_PERIODS;} likelihood_max_check_ahead_periods {return token::LIKELIHOOD_MAX_CHECK_AHEAD_PERIODS;} smoother_check_ahead_periods {return token::SMOOTHER_CHECK_AHEAD_PERIODS;} smoother_max_check_ahead_periods {return token::SMOOTHER_MAX_CHECK_AHEAD_PERIODS;} simul_debug {return token::SIMUL_DEBUG;} smoother_debug {return token::SMOOTHER_DEBUG;} simul_periodic_solution {return token::SIMUL_PERIODIC_SOLUTION;} likelihood_periodic_solution {return token::LIKELIHOOD_PERIODIC_SOLUTION;} smoother_periodic_solution {return token::SMOOTHER_PERIODIC_SOLUTION;} likelihood_inversion_filter {return token::LIKELIHOOD_INVERSION_FILTER;} likelihood_piecewise_kalman_filter {return token::LIKELIHOOD_PIECEWISE_KALMAN_FILTER;} likelihood_max_kalman_iterations {return token::LIKELIHOOD_MAX_KALMAN_ITERATIONS;} smoother_inversion_filter {return token::SMOOTHER_INVERSION_FILTER;} smoother_piecewise_kalman_filter {return token::SMOOTHER_PIECEWISE_KALMAN_FILTER;} filter_use_relaxation {return token::FILTER_USE_RELEXATION;} function_convergence_criterion {return token::FUNCTION_CONVERGENCE_CRITERION;} parameter_convergence_criterion {return token::PARAMETER_CONVERGENCE_CRITERION;} number_of_large_perturbations {return token::NUMBER_OF_LARGE_PERTURBATIONS;} number_of_small_perturbations {return token::NUMBER_OF_SMALL_PERTURBATIONS;} number_of_posterior_draws_after_perturbation {return token::NUMBER_OF_POSTERIOR_DRAWS_AFTER_PERTURBATION;} max_number_of_stages {return token::MAX_NUMBER_OF_STAGES;} random_function_convergence_criterion {return token::RANDOM_FUNCTION_CONVERGENCE_CRITERION;} random_parameter_convergence_criterion {return token::RANDOM_PARAMETER_CONVERGENCE_CRITERION;} tolf {return token::TOLF;} tolx {return token::TOLX;} opt_algo {return token::OPT_ALGO;} add_flags {return token::ADD_FLAGS;} substitute_flags {return token::SUBSTITUTE_FLAGS;} add_libs {return token::ADD_LIBS;} substitute_libs {return token::SUBSTITUTE_LIBS;} compiler {return token::COMPILER;} instruments {return token::INSTRUMENTS;} hessian { yylval->build(yytext); return token::HESSIAN; } prior_variance { yylval->build(yytext); return token::PRIOR_VARIANCE; } identity_matrix { yylval->build(yytext); return token::IDENTITY_MATRIX; } mcmc_jumping_covariance {return token::MCMC_JUMPING_COVARIANCE;} /* These four (var, varexo, varexo_det, parameters) are for change_type */ var { return token::VAR; } varexo { return token::VAREXO; } varexo_det { return token::VAREXO_DET; } parameters { return token::PARAMETERS; } predetermined_variables { return token::PREDETERMINED_VARIABLES; } bvar_prior_tau { return token::BVAR_PRIOR_TAU; } bvar_prior_decay { return token::BVAR_PRIOR_DECAY; } bvar_prior_lambda { return token::BVAR_PRIOR_LAMBDA; } bvar_prior_mu { return token::BVAR_PRIOR_MU; } bvar_prior_omega { return token::BVAR_PRIOR_OMEGA; } bvar_prior_flat { return token::BVAR_PRIOR_FLAT; } bvar_prior_train { return token::BVAR_PRIOR_TRAIN; } bvar_replic { return token::BVAR_REPLIC; } homotopy_mode {return token::HOMOTOPY_MODE; } homotopy_steps {return token::HOMOTOPY_STEPS; } homotopy_force_continue {return token::HOMOTOPY_FORCE_CONTINUE;} nocheck {return token::NOCHECK; } controlled_varexo {return token::CONTROLLED_VAREXO; } parameter_set {return token::PARAMETER_SET; } init_state {return token::INIT_STATE; } fast_realtime {return token::FAST_REALTIME; } save_realtime {return token::SAVE_REALTIME;} detail_plot {return token::DETAIL_PLOT;} flip {return token::FLIP;} interactive {return token::INTERACTIVE;} screen_shocks {return token::SCREEN_SHOCKS;} steadystate {return token::STEADYSTATE;} type {return token::TYPE;} qoq {return token::QOQ; } yoy {return token::YOY; } aoa {return token::AOA; } unconditional {return token::UNCONDITIONAL; } conditional {return token::CONDITIONAL; } fig_name {return token::FIG_NAME;} write_xls {return token::WRITE_XLS;} realtime {return token::REALTIME;} vintage {return token::VINTAGE;} prior_mode {return token::PRIOR_MODE; } prior_mean {return token::PRIOR_MEAN; } posterior_mode {return token::POSTERIOR_MODE; } posterior_mean {return token::POSTERIOR_MEAN; } posterior_median {return token::POSTERIOR_MEDIAN; } mle_mode {return token::MLE_MODE; } k_order_solver {return token::K_ORDER_SOLVER; } filter_covariance {return token::FILTER_COVARIANCE; } updated_covariance {return token::UPDATED_COVARIANCE; } filter_decomposition {return token::FILTER_DECOMPOSITION; } smoothed_state_uncertainty {return token::SMOOTHED_STATE_UNCERTAINTY; } smoother_redux {return token::SMOOTHER_REDUX; } selected_variables_only {return token::SELECTED_VARIABLES_ONLY; } pruning {return token::PRUNING; } save_draws {return token::SAVE_DRAWS; } deflator {return token::DEFLATOR;} log_deflator {return token::LOG_DEFLATOR;} epilogue {return token::EPILOGUE;} growth_factor {return token::GROWTH_FACTOR;} log_growth_factor {return token::LOG_GROWTH_FACTOR;} growth {return token::GROWTH;} cova_compute {return token::COVA_COMPUTE;} discretionary_tol {return token::DISCRETIONARY_TOL;} analytic_derivation {return token::ANALYTIC_DERIVATION;} analytic_derivation_mode {return token::ANALYTIC_DERIVATION_MODE;} solver_periods {return token::SOLVER_PERIODS;} endogenous_prior {return token::ENDOGENOUS_PRIOR;} consider_all_endogenous {return token::CONSIDER_ALL_ENDOGENOUS;} consider_all_endogenous_and_auxiliary {return token::CONSIDER_ALL_ENDOGENOUS_AND_AUXILIARY;} consider_only_observed {return token::CONSIDER_ONLY_OBSERVED;} infile {return token::INFILE;} invars {return token::INVARS;} period {return token::PERIOD;} outfile {return token::OUTFILE;} outvars {return token::OUTVARS;} huge_number {return token::HUGE_NUMBER;} dr_display_tol {return token::DR_DISPLAY_TOL;} posterior_sampling_method {return token::POSTERIOR_SAMPLING_METHOD;} posterior_sampler_options {return token::POSTERIOR_SAMPLER_OPTIONS;} silent_optimizer {return token::SILENT_OPTIMIZER;} lmmcp {return token::LMMCP;} additional_optimizer_steps {return token::ADDITIONAL_OPTIMIZER_STEPS;} bartlett_kernel_lag {return token::BARTLETT_KERNEL_LAG; } optimal { yylval->build(yytext); return token::OPTIMAL; } diagonal { yylval->build(yytext); return token::DIAGONAL; } gmm {return token::GMM;} smm {return token::SMM;} weighting_matrix {return token::WEIGHTING_MATRIX; } weighting_matrix_scaling_factor {return token::WEIGHTING_MATRIX_SCALING_FACTOR; } analytic_standard_errors {return token::ANALYTIC_STANDARD_ERRORS; } analytic_jacobian {return token::ANALYTIC_JACOBIAN; } mom_method {return token::MOM_METHOD; } penalized_estimator {return token::PENALIZED_ESTIMATOR; } verbose {return token::VERBOSE; } simulation_multiple {return token::SIMULATION_MULTIPLE; } burnin {return token::BURNIN; } seed {return token::SEED; } se_tolx {return token::SE_TOLX;} bounded_shock_support {return token::BOUNDED_SHOCK_SUPPORT; } analytical_girf {return token::ANALYTICAL_GIRF; } irf_in_percent {return token::IRF_IN_PERCENT; } emas_girf {return token::EMAS_GIRF; } emas_drop {return token::EMAS_DROP; } emas_tolf {return token::EMAS_TOLF; } emas_max_iter {return token::EMAS_MAX_ITER; } variable {return token::VARIABLE;} no_identification_strength {return token::NO_IDENTIFICATION_STRENGTH;} no_identification_reducedform {return token::NO_IDENTIFICATION_REDUCEDFORM;} no_identification_moments {return token::NO_IDENTIFICATION_MOMENTS;} no_identification_minimal {return token::NO_IDENTIFICATION_MINIMAL;} no_identification_spectrum {return token::NO_IDENTIFICATION_SPECTRUM;} normalize_jacobians {return token::NORMALIZE_JACOBIANS;} grid_nbr {return token::GRID_NBR;} tol_rank {return token::TOL_RANK;} tol_deriv {return token::TOL_DERIV;} tol_sv {return token::TOL_SV;} checks_via_subsets {return token::CHECKS_VIA_SUBSETS;} max_dim_subsets_groups {return token::MAX_DIM_SUBSETS_GROUPS;} zero_moments_tolerance {return token::ZERO_MOMENTS_TOLERANCE;} max_nrows {return token::MAX_NROWS;} with_epilogue {return token::WITH_EPILOGUE;} heteroskedastic_filter {return token::HETEROSKEDASTIC_FILTER;} non_zero {return token::NON_ZERO;} \$[^$]*\$ { strtok(yytext+1, "$"); yylval->build(yytext + 1); return token::TEX_NAME; } /* Inside a Dynare block */ var {return token::VAR;} stderr {return token::STDERR;} values {return token::VALUES;} corr {return token::CORR;} periods {return token::PERIODS;} scales {return token::SCALES;} add { yylval->build(yytext); return token::ADD; } multiply { yylval->build(yytext); return token::MULTIPLY; } cutoff {return token::CUTOFF;} mfs {return token::MFS;} balanced_growth_test_tol {return token::BALANCED_GROWTH_TEST_TOL;} gamma_pdf {return token::GAMMA_PDF;} beta_pdf {return token::BETA_PDF;} normal_pdf {return token::NORMAL_PDF;} inv_gamma_pdf {return token::INV_GAMMA_PDF;} inv_gamma1_pdf {return token::INV_GAMMA1_PDF;} inv_gamma2_pdf {return token::INV_GAMMA2_PDF;} uniform_pdf {return token::UNIFORM_PDF;} weibull_pdf {return token::WEIBULL_PDF;} dsge_prior_weight {return token::DSGE_PRIOR_WEIGHT;} surprise {return token::SURPRISE;} bind { yylval->build(yytext); return token::BIND; } relax { yylval->build(yytext); return token::RELAX; } error_bind { yylval->build(yytext); return token::ERROR_BIND; } error_relax { yylval->build(yytext); return token::ERROR_RELAX; } ; {return Dynare::parser::token_type (yytext[0]);} # {return Dynare::parser::token_type (yytext[0]);} restriction {return token::RESTRICTION;} component {return token::COMPONENT;} target {return token::TARGET;} auxname {return token::AUXNAME;} auxname_target_nonstationary {return token::AUXNAME_TARGET_NONSTATIONARY;} kind { yylval->build(yytext); return token::KIND; } ll { yylval->build(yytext); return token::LL; } dl { yylval->build(yytext); return token::DL; } dd { yylval->build(yytext); return token::DD; } /* Inside Dynare statement */ solve_algo {return token::SOLVE_ALGO;} dr_algo {return token::DR_ALGO;} simul_algo {return token::SIMUL_ALGO;} stack_solve_algo {return token::STACK_SOLVE_ALGO;} robust_lin_solve {return token::ROBUST_LIN_SOLVE;} drop {return token::DROP;} order {return token::ORDER;} sylvester {return token::SYLVESTER;} lyapunov {return token::LYAPUNOV;} dr { yylval->build(yytext); return token::DR; } sylvester_fixed_point_tol {return token::SYLVESTER_FIXED_POINT_TOL;} lyapunov_complex_threshold {return token::LYAPUNOV_COMPLEX_THRESHOLD;} lyapunov_fixed_point_tol {return token::LYAPUNOV_FIXED_POINT_TOL;} lyapunov_doubling_tol {return token::LYAPUNOV_DOUBLING_TOL;} dr_cycle_reduction_tol {return token::DR_CYCLE_REDUCTION_TOL;} dr_logarithmic_reduction_tol {return token::DR_LOGARITHMIC_REDUCTION_TOL;} dr_logarithmic_reduction_maxiter {return token::DR_LOGARITHMIC_REDUCTION_MAXITER;} replic {return token::REPLIC;} ar {return token::AR;} nofunctions {return token::NOFUNCTIONS;} irf {return token::IRF;} irf_shocks {return token::IRF_SHOCKS;} hp_filter {return token::HP_FILTER;} one_sided_hp_filter {return token::ONE_SIDED_HP_FILTER;} bandpass_filter {return token::BANDPASS_FILTER;} hp_ngrid {return token::HP_NGRID;} filtered_theoretical_moments_grid {return token::FILTERED_THEORETICAL_MOMENTS_GRID;} simul_seed {return token::SIMUL_SEED;} qz_criterium {return token::QZ_CRITERIUM;} qz_zero_threshold {return token::QZ_ZERO_THRESHOLD;} simul {return token::SIMUL;} 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;} mh_initialize_from_previous_mcmc {return token::MH_INITIALIZE_FROM_PREVIOUS_MCMC;} mh_initialize_from_previous_mcmc_directory {return token::MH_INITIALIZE_FROM_PREVIOUS_MCMC_DIRECTORY;} mh_initialize_from_previous_mcmc_record {return token::MH_INITIALIZE_FROM_PREVIOUS_MCMC_RECORD;} mh_initialize_from_previous_mcmc_prior {return token::MH_INITIALIZE_FROM_PREVIOUS_MCMC_PRIOR;} planner_discount {return token::PLANNER_DISCOUNT;} planner_discount_latex_name {return token::PLANNER_DISCOUNT_LATEX_NAME;} calibration {return token::CALIBRATION;} irf_plot_threshold {return token::IRF_PLOT_THRESHOLD;} no_homotopy {return token::NO_HOMOTOPY;} particle_filter_options {return token::PARTICLE_FILTER_OPTIONS;} terminal_steady_state_as_guess_value {return token::TERMINAL_STEADY_STATE_AS_GUESS_VALUE;} constant_simulation_length {return token::CONSTANT_SIMULATION_LENGTH;} block_static { return token::BLOCK_STATIC; } block_dynamic { return token::BLOCK_DYNAMIC; } incidence { return token::INCIDENCE; } stderr_multiples {return token::STDERR_MULTIPLES;} diagonal_only {return token::DIAGONAL_ONLY;} equation {return token::EQUATION;} exclusion {return token::EXCLUSION;} lag {return token::LAG;} coeff {return token::COEFF;} overwrite {return token::OVERWRITE;} learnt_in {return token::LEARNT_IN;} upper_cholesky {return token::UPPER_CHOLESKY;} lower_cholesky {return token::LOWER_CHOLESKY;} chain {return token::CHAIN;} number_of_lags {return token::NUMBER_OF_LAGS;} number_of_regimes {return token::NUMBER_OF_REGIMES;} duration {return token::DURATION;} coefficients {return token::COEFFICIENTS;} variances {return token::VARIANCES;} equations {return token::EQUATIONS;} time_shift {return token::TIME_SHIFT;} structural {return token::STRUCTURAL;} true { yylval->build(yytext); return token::TRUE; } false { yylval->build(yytext); return token::FALSE; } \. {return Dynare::parser::token_type (yytext[0]);} \\ {return Dynare::parser::token_type (yytext[0]);} \' {return Dynare::parser::token_type (yytext[0]);} use_dll {return token::USE_DLL;} block {return token::BLOCK;} bytecode {return token::BYTECODE;} all_values_required {return token::ALL_VALUES_REQUIRED;} no_static {return token::NO_STATIC;} differentiate_forward_vars {return token::DIFFERENTIATE_FORWARD_VARS;} parallel_local_files {return token::PARALLEL_LOCAL_FILES;} linear {return token::LINEAR;} , {return token::COMMA;} : {return Dynare::parser::token_type (yytext[0]);} [\(\)] {return Dynare::parser::token_type (yytext[0]);} \[ {return Dynare::parser::token_type (yytext[0]);} \] { if (sigma_e) sigma_e = 0; return Dynare::parser::token_type (yytext[0]); } \+ {return token::PLUS;} - {return token::MINUS;} \* {return token::TIMES;} \/ {return token::DIVIDE;} = {return token::EQUAL;} < {return token::LESS;} > {return token::GREATER;} >= {return token::GREATER_EQUAL;} <= {return token::LESS_EQUAL;} == {return token::EQUAL_EQUAL;} != {return token::EXCLAMATION_EQUAL;} \+= {return token::PLUS_EQUAL;} \*= {return token::TIMES_EQUAL;} \^ {return token::POWER;} exp {return token::EXP;} log {return token::LOG;} log10 {return token::LOG10;} ln {return token::LN;} sin {return token::SIN;} cos {return token::COS;} tan {return token::TAN;} asin {return token::ASIN;} acos {return token::ACOS;} atan {return token::ATAN;} sinh {return token::SINH;} cosh {return token::COSH;} tanh {return token::TANH;} asinh {return token::ASINH;} acosh {return token::ACOSH;} atanh {return token::ATANH;} sqrt {return token::SQRT;} cbrt {return token::CBRT;} max {return token::MAX;} min {return token::MIN;} abs {return token::ABS;} sign {return token::SIGN;} normcdf {return token::NORMCDF;} normpdf {return token::NORMPDF;} erf {return token::ERF;} erfc {return token::ERFC;} steady_state {return token::STEADY_STATE;} expectation {return token::EXPECTATION;} var_expectation {return token::VAR_EXPECTATION;} pac_expectation {return token::PAC_EXPECTATION;} pac_target_nonstationary {return token::PAC_TARGET_NONSTATIONARY;} discount {return token::DISCOUNT;} varobs {return token::VAROBS;} varexobs {return token::VAREXOBS;} nan {return token::NAN_CONSTANT;} inf {return token::INF_CONSTANT;} constants {return token::CONSTANTS;} /* options for GSA module by Marco Ratto */ identification {return token::IDENTIFICATION;} morris {return token::MORRIS;} stab {return token::STAB;} redform {return token::REDFORM;} pprior {return token::PPRIOR;} prior_range {return token::PRIOR_RANGE;} ppost {return token::PPOST;} ilptau {return token::ILPTAU;} morris_nliv {return token::MORRIS_NLIV;} morris_ntra {return token::MORRIS_NTRA;} Nsam {return token::NSAM;} load_redform {return token::LOAD_REDFORM;} load_rmse {return token::LOAD_RMSE;} load_stab {return token::LOAD_STAB;} alpha2_stab {return token::ALPHA2_STAB;} logtrans_redform {return token::LOGTRANS_REDFORM;} threshold_redform {return token::THRESHOLD_REDFORM;} ksstat_redform {return token::KSSTAT_REDFORM;} alpha2_redform {return token::ALPHA2_REDFORM;} namendo {return token::NAMENDO;} namlagendo {return token::NAMLAGENDO;} namexo {return token::NAMEXO;} rmse {return token::RMSE;} lik_only {return token::LIK_ONLY;} var_rmse {return token::VAR_RMSE;} pfilt_rmse {return token::PFILT_RMSE;} istart_rmse {return token::ISTART_RMSE;} alpha_rmse {return token::ALPHA_RMSE;} alpha2_rmse {return token::ALPHA2_RMSE;} load_ident_files {return token::LOAD_IDENT_FILES;} useautocorr {return token::USEAUTOCORR;} neighborhood_width {return token::NEIGHBORHOOD_WIDTH;} pvalue_ks {return token::PVALUE_KS;} pvalue_corr {return token::PVALUE_CORR;} /* end of GSA options */ /* For identification() statement */ prior_mc {return token::PRIOR_MC;} advanced {return token::ADVANCED;} max_dim_cova_group {return token::MAX_DIM_COVA_GROUP;} gsa_sample_file {return token::GSA_SAMPLE_FILE;} use_shock_groups {return token::USE_SHOCK_GROUPS;} colormap {return token::COLORMAP;} [a-z_][a-z0-9_]* { yylval->build(yytext); return token::NAME; } ((([0-9]*\.[0-9]+)|([0-9]+\.))([ed][-+]?[0-9]+)?)|([0-9]+[ed][-+]?[0-9]+) { yylval->build(yytext); return token::FLOAT_NUMBER; } [0-9]+ { yylval->build(yytext); return token::INT_NUMBER; } \( { yylval->as().append(yytext); dates_parens_nb++; } \) { yylval->as().append(yytext); if (--dates_parens_nb == 0) { BEGIN DYNARE_STATEMENT; return token::DATES; } } . { yylval->as().append(yytext); } \|e { return token::PIPE_E; } \|x { return token::PIPE_X; } \|p { return token::PIPE_P; } \'[^\']*\' { yylval->build(yytext + 1).pop_back(); return token::QUOTED_STRING; } /* Verbatim Block */ verbatim[[:space:]]*; { BEGIN VERBATIM_BLOCK; } end[[:space:]]*; { BEGIN INITIAL; } \n { if (strlen(yytext) > 1) driver.add_verbatim_remove_charset(yytext, "\n"); } . { yymore(); } <> { driver.add_verbatim(eofbuff); yyterminate(); } /* An instruction starting with a recognized symbol (which is not a modfile local or an external function) is passed as NAME, otherwise it is a native statement until the end of the line. We exclude modfile local vars because the user may want to modify their value using a Matlab assignment statement. We also exclude external functions because the user may have used a Matlab matrix element in initval (in which case Dynare recognizes the matrix name as an external function symbol), and may want to modify the matrix later with Matlab statements. */ [a-z_][a-z0-9_]* { if (driver.symbol_exists_and_is_not_modfile_local_or_external_function(yytext)) { BEGIN DYNARE_STATEMENT; yylval->build(yytext); return token::NAME; } else { /* Enter a native block */ BEGIN NATIVE; yyless(0); } } /* For joint prior statement, match [symbol, symbol, ...] If no match, begin native and push everything back on stack We produce SYMBOL_VEC in Flex (instead of matching `'[' symbol_list ']'` in Bison because the pattern also matches potential native statements (e.g. function returns from a MATLAB/Octave function). Hence, we need to be able to back out of the statement if we realize it's a native statement and move to the NATIVE context */ \[([[:space:]]*[a-z_][a-z0-9_]*[[:space:]]*,{1}[[:space:]]*)*([[:space:]]*[a-z_][a-z0-9_]*[[:space:]]*){1}\] { string yytextcpy{yytext}; yytextcpy.erase(remove(yytextcpy.begin(), yytextcpy.end(), '['), yytextcpy.end()); yytextcpy.erase(remove(yytextcpy.begin(), yytextcpy.end(), ']'), yytextcpy.end()); yytextcpy.erase(remove(yytextcpy.begin(), yytextcpy.end(), ' '), yytextcpy.end()); istringstream ss(yytextcpy); string token; vector val; bool dynare_statement = true; while(getline(ss, token, ',')) if (driver.symbol_exists_and_is_not_modfile_local_or_external_function(token)) val.push_back(token); else { BEGIN NATIVE; yyless(0); dynare_statement = false; break; } if (dynare_statement) { BEGIN DYNARE_STATEMENT; yylval->build>(val); return token::SYMBOL_VEC; } } /* Enter a native block */ . { BEGIN NATIVE; yyless(0); } /* Add the native statement */ { [^/%*\n\.\'\"]* | \' | \'[^\'\n]*\' | \"[^\"\n]*\" | \.{1,2} | \* | \/ { yymore(); eofbuff = yytext; } \.{3,}[[:space:]]*\n { driver.add_native_remove_charset(yytext, "\n"); } \n { if (strlen(yytext) > 1) driver.add_native_remove_charset(yytext, "\n"); BEGIN INITIAL; } <> { driver.add_native(eofbuff); yyterminate(); } \.{3,}[[:space:]]*%.*\n | %[^\n]* { driver.add_native_remove_charset(yytext, "%"); } \.{3,}[[:space:]]*"//".*\n | "//"[^\n]* { driver.add_native_remove_charset(yytext, "//"); } \.{3,}[[:space:]]*"/*" { driver.add_native_remove_charset(yytext, "/*"); BEGIN NATIVE_COMMENT; } "/*" { driver.add_native_remove_charset(yytext, "/*"); comment_caller = NATIVE; BEGIN COMMENT; } } "*/"[[:space:]]*\n { BEGIN NATIVE; } . <> { yyterminate(); } <*>. { driver.error(*yylloc, "character unrecognized by lexer"); } %% DynareFlex::DynareFlex(istream* in, ostream* out) : DynareFlexLexer{in, out} { } void DynareFlex::location_increment(Dynare::parser::location_type *yylloc, const char *yytext) { while (*yytext != 0) if (*yytext++ == '\n') yylloc->lines(1); else yylloc->columns(1); } /* This implementation of DynareFlexLexer::yylex() is required to fill the * vtable of the class DynareFlexLexer. We define the scanner's main yylex * function via YY_DECL to reside in the DynareFlex class instead. */ #ifdef yylex # undef yylex #endif int DynareFlexLexer::yylex() { cerr << "DynareFlexLexer::yylex() has been called, that should never happen!" << endl; exit(EXIT_FAILURE); }