%{ #include #include "d.h" extern FILE *f_out; extern int yylineno, var_nbr, longname, dr_algo, simul_algo, drop, linear, order, replic, iter, nbr_tmpvar, ar, nocorr, nofunctions, nomoments, irf, hp_filter, hp_ngrid, simul, simul_seed; extern double shock_size; extern char * varexo; extern struct s_check check; int ms_flag, varlist_flag, tr_row, tr_col, permit_sigma_e_; struct queue *model; %} %union { char *string; struct queue *p_queue; struct token *p_tok; struct loop *p_loop; } %token END ENDVAL INITVAL HISTVAL MODEL PERIODS SHOCKS VALUES VAR VAREXO VARRECUR EQUAL %token VARF VARP DEL SUM PROD TO MSHOCKS LONGNAMES PARAMETERS DYN2VEC RPLOT %token DO TO ENDO PROD BY DOLLAR STEADY STDERR DSAMPLE %token STOCH_SIMUL DR_ALGO SIMUL_ALGO DROP LINEAR ORDER REPLIC AR NOCORR %token NOMOMENTS NOFUNCTIONS SIGMA_E HP_FILTER HP_NGRID SIMUL_SEED %token RESOL SIMUL IRF DISP_DR DISP_MOMENTS D_CORR SHOCK_SIZE OPTIM_WEIGHTS %token OSR_PARAMS OSR CALIB_VAR CALIB AUTOCORR COVAR DYNATYPE DYNASAVE %token VAREXO_ST OLR OLR_INST OLR_BETA CHECK %token ESTIMATED_PARAMS GAMMA_PDF BETA_PDF NORMAL_PDF INV_GAMMA_PDF CORR %token ESTIMATION DATAFILE NOBS FIRST_OBS VAROBS QZ_CRITERIUM %token INUMBER DNUMBER NAME OPERATORS POUND EOL INDEX %token VAR_ID %type equation_list equation other_inst p_expr expression elem_exp %type del_exp sum_exp prod_exp period_list value_list %type value_list1 value_list2 expr1 do_loop %type var_exp var_id_exp indexed_var_exp %type triangular_matrix triangular_row %type loop_init %type value prior %expect 5 %% statement_list: statement | statement_list statement ; statement: periods | var | varexo | varexo_st | varrecur | model | initval | endval | histval | shocks | mshocks | obsolete | longnames {longname=1;} | parameters | dyn2vec | rplot | steady | stoch_simul | resol | simul | dsample | check | irf | d_corr | disp_dr | disp_moments | optim_weights | osr_params | osr | calib_var | calib | dynatype | dynasave | sigma_e | olr | olr_inst | estimated_params | estimation | varobs ; longnames : LONGNAMES ';' ; periods : PERIODS INUMBER ';'{print_iter($2);} | PERIODS '=' INUMBER ';' {print_iter($3);} ; var : VAR {varlist_flag=1;} varlist ';' ; varexo : VAREXO {varlist_flag=0;} varlist ';' ; varexo_st : VAREXO_ST {varlist_flag=5;} varlist ';' ; varrecur : VARRECUR {varlist_flag=3;} varlist ';' ; varlist : varlist NAME '-' NAME {add_var_range($2,$4,varlist_flag);} | varlist ',' NAME '-' NAME {add_var_range($3,$5,varlist_flag);} | varlist NAME {add_var($2,varlist_flag);} | varlist ',' NAME {add_var($3,varlist_flag);} | NAME '-' NAME {add_var_range($1,$3,varlist_flag);} | NAME {add_var($1,varlist_flag);} ; parameters : PARAMETERS {varlist_flag=4;} varlist ';' {print_param();} ; model : MODEL ';' {print_var();} equation_list END {model=$4;print_model(model);} | MODEL '(' LINEAR ')' ';' {print_var();} equation_list END {check.linear=1;model=$7;p_option("linear","1");print_model(model);} ; initval : INITVAL ';' {p_initval();} initval_list END {pe_initval();} ; endval : ENDVAL ';' {p_endval();} initval_list END {pe_endval();} ; histval : HISTVAL ';' {p_histval();} histval_list END ; shocks: SHOCKS ';' {ms_flag=0;p_i_shocks();} shock_list END ; mshocks: MSHOCKS ';' {ms_flag=1;p_i_shocks();} shock_list END ; equation_list : equation_list equation {$$=add_to_queue($1,$2);} | equation_list other_inst {$$=add_to_queue($1,$2);} | equation_list do_loop {$$=copy_queue($$,$2);} | equation {$$=create_queue($1);} | other_inst {$$=create_queue($1);} | do_loop ; equation : expression EQUAL expression ';' {$$=add_to_queue($1,token(" -(",-1)); $$=copy_queue($$,$3); $$=add_to_queue($$,token(")",-1));} | expression ';' ; other_inst : POUND p_expr EOL {$$=$2; mark_pound($$);} ; do_loop : DO loop_init ';' equation_list ENDO ';' {$$=do_loop($2,$4);} ; loop_init : NAME EQUAL INUMBER TO INUMBER {$$=initial_loop($1,$3,$5,"1");} | NAME EQUAL INUMBER TO INUMBER BY INUMBER {$$=initial_loop($1,$3,$5,$7);} | INDEX EQUAL INUMBER TO INUMBER {$$=initial_loop($1,$3,$5,"1");} | INDEX EQUAL INUMBER TO INUMBER BY INUMBER {$$=initial_loop($1,$3,$5,$7);} ; p_expr : p_expr ';' {$$ = $1;} | p_expr ';' expression {$$ = add_to_queue($1,token(";",-1)); $$=copy_queue($$,$3);} | expression {$$ = $1;} ; expression : expression elem_exp {$$=copy_queue($1,$2);} | elem_exp ; elem_exp : '(' expression ')' { $$ = create_queue(token("(",-1)); $$ = copy_queue($$,$2); $$ = add_to_queue($$,token(")",-1));} | var_exp | expr1 ; expr1: NAME {$$ = create_queue(token($1,-1));} | ',' {$$ = create_queue(token(",",-1));} | OPERATORS {$$ = create_queue(token($1,-1));} | ':' {$$ = create_queue(token(":",-1));} | INUMBER {$$ = create_queue(token($1,-1));} | DNUMBER {$$ = create_queue(token($1,-1));} | INDEX {$$ = create_queue(token($1,-2));} | del_exp | sum_exp | prod_exp ; var_exp : var_id_exp '(' INUMBER ')' {set_ll($1,$3,INUMBER);$$=$1;} | var_id_exp '(' OPERATORS INUMBER ')' {set_ll($1,$4,INUMBER);$$=$1;} | var_id_exp '(' INDEX ')' {set_ll($1,$3,INDEX);$$=$1;} | var_id_exp '(' OPERATORS INDEX ')' {set_ll($1,$4,INDEX);$$=$1;} | var_id_exp {set_ll($1,"0",INUMBER);$$=$1;} ; var_id_exp : VAR_ID {$$ = create_queue($1);} | indexed_var_exp ; indexed_var_exp : indexed_var_exp DOLLAR INDEX {$$=add_to_queue($1,token($3,-3));} | NAME DOLLAR INDEX {$$=create_queue(token($1,-3));$$=add_to_queue($$,token($3,-3));} ; del_exp : DEL '(' INUMBER ':' expression ')' {$$ = m_del($3,$5);} ; sum_exp : SUM '(' loop_init ':' expression ')' {$$ = operator_loop($3,$5,"+");} ; prod_exp : PROD '(' loop_init ':' expression ')' {$$ = operator_loop($3,$5,"*");} ; initval_list : initval_list initval_elem | initval_elem ; initval_elem : VAR_ID EQUAL expression ';' {p_init($1,$3);} ; histval_list : histval_list histval_elem | histval_elem ; histval_elem : VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_hist($1,$3,$6);} ; shock_list : shock_list shock_elem | shock_elem ; shock_elem : VAR VAR_ID ';' PERIODS period_list ';' VALUES value_list ';' {p_shocks($2,$5,$8,ms_flag);} | VAR VAR_ID ';' STDERR expression ';' {simul_algo=1; p_stderr($2,$5);} | VAR VAR_ID EQUAL expression ';' {simul_algo=1; p_variance($2,$2,$4);} | VAR VAR_ID ',' VAR_ID EQUAL expression ';' {simul_algo=1; p_variance($2,$4,$6);} ; period_list : period_list INUMBER {$$=add_to_queue($1,periods($2,0));} | period_list INUMBER ':' INUMBER {$$=add_to_queue($1,periods($2,$4));} | INUMBER ':' INUMBER {$$=create_queue(periods($1,$3));} | INUMBER {$$=create_queue(periods($1,0));} ; value_list: value_list1 | value_list2 ; value_list1: value_list1 DNUMBER {$$=add_to_queue($1,create_queue(token($2,-1)));} | value_list1 INUMBER {$$=add_to_queue($1,create_queue(token($2,-1)));} | DNUMBER {$$=create_queue(create_queue(token($1,-1)));} | INUMBER {$$=create_queue(create_queue(token($1,-1)));} ; value_list2: value_list2 '(' expression ')' {$$=add_to_queue($1,$3);} | '(' expression ')' {$$=create_queue($2);} ; obsolete : VARF varlist3 ';' {fputs("Warning: VARF is an obsolete feature\n",stderr);} | VARP varlist3 ';' {fputs("Warning: VARP is an obsolete feature\n",stderr);} ; varlist3 : varlist3 NAME {;} | varlist3 ',' NAME {;} | NAME {;} ; dyn2vec : DYN2VEC ';' {dyn2vec(0);} | DYN2VEC {nbr_tmpvar = 0;} varlist4 ';' {dyn2vec(1);} ; varlist4 : varlist4 NAME {add_tmpvar($2,0);} | varlist4 NAME '=' NAME {add_tmpvar($2,$4);} | varlist4 ',' NAME {add_tmpvar($3,0);} | varlist4 ',' NAME '=' NAME {add_tmpvar($3,$5);} | NAME {nbr_tmpvar = 0; add_tmpvar($1,0);} | NAME '=' NAME {nbr_tmpvar = 0; add_tmpvar($1,$3);} ; rplot : RPLOT {nbr_tmpvar = 0;} varlist4 ';' {print_rplot();} ; steady : STEADY ';' {p_steady(model);} | STEADY '(' LINEAR ')' ';' {p_steady_linear(model);check.linear=1;} ; stoch_simul : STOCH_SIMUL ';' {p_stoch_simul(dr_algo,simul_algo,drop,linear,order,replic,ar,nocorr,nofunctions,nomoments,irf);} | STOCH_SIMUL '(' options_list1 ')' ';' {p_stoch_simul();} | STOCH_SIMUL varlist4 ';' {p_stoch_simul();} | STOCH_SIMUL '(' options_list1 ')' varlist4 ';' {p_stoch_simul();} ; options_list1 : options_list1 ',' DR_ALGO '=' INUMBER {p_option("dr_algo",$5);} | options_list1 ',' SIMUL_ALGO '=' INUMBER {p_option("simul_algo",$5);} | options_list1 ',' LINEAR {p_option("linear","1");check.linear=1;} | options_list1 ',' ORDER '=' INUMBER {p_option("order",$5);} | options_list1 ',' REPLIC '=' INUMBER {p_option("replic",$5);} | options_list1 ',' DROP '=' INUMBER {p_option("drop",$5);} | options_list1 ',' AR '=' INUMBER {p_option("ar",$5);} | options_list1 ',' NOCORR {p_option("nocorr","1");} | options_list1 ',' NOFUNCTIONS {p_option("nofunctions","1");} | options_list1 ',' NOMOMENTS {p_option("nomoments","1");} | options_list1 ',' IRF '=' INUMBER {p_option("irf",$5);} | options_list1 ',' HP_FILTER '=' INUMBER {p_option("hp_filter",$5);} | options_list1 ',' HP_NGRID '=' INUMBER {p_option("hp_ngrid",$5);} | options_list1 ',' PERIODS '=' INUMBER {p_option("periods",$5);p_option("simul","1");} | options_list1 ',' SIMUL {p_option("simul","1");} | options_list1 ',' SIMUL_SEED '=' INUMBER { p_option("simul_seed",$5)} | options_list1 ',' QZ_CRITERIUM '=' DNUMBER { p_option("qz_criterium",$5)} | options_list1 ',' QZ_CRITERIUM '=' INUMBER { p_option("qz_criterium",$5)} | DR_ALGO '=' INUMBER {p_option("dr_algo",$3);} | SIMUL_ALGO '=' INUMBER {p_option("simul_algo",$3);} | LINEAR {p_option("linear","1");} | ORDER '=' INUMBER {p_option("order",$3);} | REPLIC '=' INUMBER {p_option("replic",$3);} | DROP '=' INUMBER {p_option("drop",$3);} | AR '=' INUMBER {p_option("ar",$3);} | NOCORR {p_option("nocorr","1");} | NOFUNCTIONS {p_option("nofunctions","1");} | NOMOMENTS {p_option("nomoments","1");} | IRF '=' INUMBER {p_option("irf",$3);} | HP_FILTER '=' INUMBER {p_option("hp_filter",$3);} | HP_NGRID '=' INUMBER {p_option("hp_ngrid",$3);} | PERIODS '=' INUMBER {p_option("periods",$3);p_option("simul","1");} | SIMUL {p_option("simul","1");} | SIMUL_SEED '=' INUMBER { p_option("simul_seed",$3)} | QZ_CRITERIUM '=' INUMBER { p_option("qz_criterium",$3)} | QZ_CRITERIUM '=' DNUMBER { p_option("qz_criterium",$3)} ; resol : RESOL ';' {p_resol(dr_algo,linear,order,model);} | RESOL '(' options_list2 ')' ';' {p_resol(dr_algo,linear,order,model);} ; options_list2 : options_list2 ',' DR_ALGO '=' INUMBER {dr_algo = atoi($5);} | options_list2 ',' LINEAR {linear = 1;} | options_list2 ',' ORDER '=' INUMBER {order = atoi($5);} | DR_ALGO '=' INUMBER {dr_algo = atoi($3);} | LINEAR {linear = 1;} | ORDER '=' INUMBER {order = atoi($3);} ; simul : SIMUL ';' {p_simul(0,linear,order,replic);} |SIMUL '(' options_list1 ')' ';' {p_simul(0,linear,order,replic);} ; options_list3 : options_list3 ',' SIMUL_ALGO '=' INUMBER {simul_algo = atoi($5);} | options_list3 ',' LINEAR {linear = 1;} | options_list3 ',' ORDER '=' INUMBER {order = atoi($5);} | options_list3 ',' REPLIC '=' INUMBER {replic = atoi($5);} | SIMUL_ALGO '=' INUMBER {simul_algo = atoi($3);} | LINEAR {linear = 1;} | ORDER '=' INUMBER {order = atoi($3);} | REPLIC '=' INUMBER {replic = atoi($3);} ; dsample : DSAMPLE ';' {p_dsample(0);} | DSAMPLE INUMBER ';' {p_dsample(1,$2);} | DSAMPLE INUMBER INUMBER ';' {p_dsample(2,$2,$3);} ; check : CHECK ';' {p_check();} | CHECK '(' options_list1 ')' ';' {p_check();} ; irf : IRF ';' {p_irf(varexo,shock_size,iter,drop,replic,order);} | IRF '(' option_list_irf ')' ';' {p_irf(varexo,shock_size,iter,drop,replic,order);} | IRF varlist4 ';' {p_irf(varexo,shock_size,iter,drop,replic,order);} | IRF '(' option_list_irf ')' varlist4 ';' {p_irf(varexo,shock_size,iter,drop,replic,order);} ; option_list_irf : option_list_irf ',' VAREXO '=' NAME {varexo = $5;} | option_list_irf ',' SHOCK_SIZE '=' DNUMBER {shock_size = atof($5);} | option_list_irf ',' PERIODS '=' INUMBER {iter = atoi($5);} | option_list_irf ',' DROP '=' INUMBER {drop = atoi($5);} | option_list_irf ',' REPLIC '=' INUMBER {replic = atoi($5);} | option_list_irf ',' ORDER '=' INUMBER {order = atoi($5);} | VAREXO '=' NAME {varexo = $3;} | SHOCK_SIZE '=' DNUMBER {shock_size = atof($3);} | PERIODS '=' INUMBER {iter = atoi($3);} | DROP '=' INUMBER {drop = atoi($3);} | REPLIC '=' INUMBER {replic = atoi($3);} | ORDER '=' INUMBER {order = atoi($3);} ; d_corr : D_CORR ';' {p_d_corr();} | D_CORR varlist4 ';' {p_d_corr();} ; disp_dr : DISP_DR ';' {p_disp_dr(order);} | DISP_DR '(' ORDER '=' INUMBER ')' ';' {p_disp_dr(atoi($5));} | DISP_DR varlist4 ';' {p_disp_dr(order);} | DISP_DR '(' ORDER '=' INUMBER ')' varlist4 ';' {p_disp_dr(atoi($5));} ; disp_moments : DISP_MOMENTS ';' {p_disp_moments(drop,order);} | DISP_MOMENTS '(' option_list_disp_moments ')' ';' {p_disp_moments(drop,order);} | DISP_MOMENTS varlist4 ';' {p_disp_moments(drop,order);} | DISP_MOMENTS '(' option_list_disp_moments ')' varlist4 ';' {p_disp_moments(drop,order);} ; option_list_disp_moments : option_list_disp_moments ',' DROP '=' INUMBER {drop = atoi($5);} | option_list_disp_moments ',' ORDER '=' INUMBER {order = atoi($5);} | DROP '=' INUMBER {drop = atoi($3);} | ORDER '=' INUMBER {order = atoi($3);} ; optim_weights : OPTIM_WEIGHTS ';' {p_optim_weights_init();} optim_weights_list END ; optim_weights_list : optim_weights_list VAR_ID expression ';' {p_optim_weights1($2, $3);} | optim_weights_list VAR_ID ',' VAR_ID expression ';' {p_optim_weights2($2, $4, $5);} | VAR_ID expression ';' {p_optim_weights1($1, $2);} | VAR_ID ',' VAR_ID expression ';' {p_optim_weights2($1, $3, $4);} ; osr_params : OSR_PARAMS osr_params_list ';' ; osr_params_list : osr_params_list ',' NAME {p_osr_params($3);} | osr_params_list NAME {p_osr_params($2);} | NAME {p_osr_params($1);} ; osr : OSR ';' {p_osr();} | OSR '(' options_list4 ')' ';' {p_osr();} | OSR varlist4 ';' {p_osr();} | OSR '(' options_list4 ')' varlist4 ';' {p_osr();} ; olr : OLR ';' {p_olr();} | OLR '(' options_list4 ')' ';' {p_olr();} | OLR varlist4 ';' {p_olr();} | OLR '(' options_list4 ')' varlist4 ';' {p_olr();} ; options_list4 : OLR_BETA '=' INUMBER {p_option("OLR_BETA",$3);} | OLR_BETA '=' DNUMBER {p_option("OLR_BETA",$3);} | options_list1 | options_list4 ',' options_list1 | options_list4 ',' OLR_BETA '=' INUMBER {p_option("OLR_BETA",$5);} | options_list4 ',' OLR_BETA '=' DNUMBER {p_option("OLR_BETA",$5);} ; olr_inst : OLR_INST {p_olr_inst_init();} olr_inst_list ';' ; olr_inst_list : olr_inst_list ',' NAME {p_olr_inst($3);} | olr_inst_list NAME {p_olr_inst($2);} | NAME {p_olr_inst($1);} ; calib_var : CALIB_VAR ';' {p_calib_init();} calib_var_list END ; calib_var_list : calib_var_list VAR_ID EQUAL expression ';' {p_calib_var($2, $4,"1");} | calib_var_list VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_var($2,$7,$4);} | calib_var_list VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_var($2,$7,$4);} | calib_var_list VAR_ID ',' VAR_ID EQUAL expression ';' {p_calib_covar($2,$4,$6,"1");} | calib_var_list VAR_ID ',' VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_covar($2,$4,$9,$6);} | calib_var_list VAR_ID ',' VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_covar($2,$4,$9,$6);} | calib_var_list AUTOCORR VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($3,$5,$8,"1");} | calib_var_list AUTOCORR VAR_ID '(' INUMBER ')' '(' DNUMBER ')' EQUAL expression ';' {p_calib_ac($3,$5,$11,$8);} | calib_var_list AUTOCORR VAR_ID '(' INUMBER ')' '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($3,$5,$11,$8);} | VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_var($1,$6,$3);} | VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_var($1,$6,$3);} | VAR_ID EQUAL expression ';' {p_calib_var($1, $3, "1");} | VAR_ID ',' VAR_ID '(' DNUMBER ')' EQUAL expression ';' {p_calib_covar($1,$3,$8,$5);} | VAR_ID ',' VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_covar($1,$3,$8,$5);} | VAR_ID ',' VAR_ID EQUAL expression ';' {p_calib_covar($1,$3,$5,"1");} | AUTOCORR VAR_ID '(' INUMBER ')' '(' DNUMBER ')' EQUAL expression ';' {p_calib_ac($2,$4,$10,$7);} | AUTOCORR VAR_ID '(' INUMBER ')' '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($2,$4,$10,$7);} | AUTOCORR VAR_ID '(' INUMBER ')' EQUAL expression ';' {p_calib_ac($2,$4,$7,"1");} ; calib : CALIB ';' {p_calib(0);} | CALIB '(' COVAR ')' ';' {p_calib(1);} ; dynatype : DYNATYPE '(' NAME ')'';' {p_dynatype($3,"");} | DYNATYPE '(' NAME ')' varlist4 ';' {p_dynatype($3,"");} | DYNATYPE NAME ';' {p_dynatype($2,"");} | DYNATYPE '(' NAME '.' NAME ')'';' {p_dynatype($3,$5);} | DYNATYPE '(' NAME '.' NAME ')' varlist4 ';' {p_dynatype($3,$5);} | DYNATYPE NAME '.' NAME ';' {p_dynatype($2,$4);}; dynasave : DYNASAVE '(' NAME ')'';' {p_dynasave($3,"");} | DYNASAVE '(' NAME ')' varlist4 ';' {p_dynasave($3,"");} | DYNASAVE NAME ';' {p_dynasave($2,"");} | DYNASAVE '(' NAME '.' NAME ')'';' {p_dynasave($3,$5);} | DYNASAVE '(' NAME '.' NAME ')' varlist4 ';' {p_dynasave($3,$5);} | DYNASAVE NAME '.' NAME ';' {p_dynasave($2,$4);}; sigma_e : SIGMA_E '=' '[' {tr_row = 0;} triangular_matrix ']' ';' {p_sigma_e($5);} ; triangular_matrix : triangular_matrix ';' {tr_col = 0;} triangular_row {++tr_row;tr_check(tr_row,tr_col);$$=add_to_queue($1,$4);} | {tr_col = 0;} triangular_row {++tr_row;tr_check(tr_row,tr_col);$$=create_queue($2);} ; triangular_row : triangular_row ',' '(' expression ')' {$$=add_to_queue($1,$4);++tr_col;} | triangular_row ',' DNUMBER {$$=add_to_queue($1,create_queue(token($3,-1)));++tr_col;} | triangular_row ',' INUMBER {$$=add_to_queue($1,create_queue(token($3,-1)));++tr_col;} | triangular_row '(' expression ')' {$$=add_to_queue($1,$3);++tr_col;} | triangular_row DNUMBER {$$=add_to_queue($1,create_queue(token($2,-1)));++tr_col;} | triangular_row INUMBER {$$=add_to_queue($1,create_queue(token($2,-1)));++tr_col;} | '(' expression ')' {$$=create_queue($2);++tr_col;} | DNUMBER {$$=create_queue(token($1,-1));$$=create_queue($$);++tr_col;} | INUMBER {$$=create_queue(token($1,-1));$$=create_queue($$);++tr_col;} ; estimated_params : ESTIMATED_PARAMS ';' {p_estimated_init();} estimated_list END ; estimated_list : estimated_list estimated_elem | estimated_elem ; estimated_elem : VAR VAR_ID ',' value ';' {p_estimated_elem1($2,$4,0,0,0,0,0);} | CORR VAR_ID ',' VAR_ID ',' value ';' {p_estimated_elem2($2,$4,$6,0,0,0,0,0);} | NAME ',' value ';' {p_estimated_elem3($1,$3,0,0,0,0,0);} | VAR VAR_ID ',' value ',' value ',' value ';' {p_estimated_elem1($2,$4,$6,$8,0,0,0);} | CORR VAR_ID ',' VAR_ID ',' value ',' value ',' value ';' {p_estimated_elem2($2,$4,$6,$8,$10,0,0,0);} | NAME ',' value ',' value ',' value ';' {p_estimated_elem3($1,$3,$5,$7,0,0,0);} | VAR VAR_ID ',' value ',' prior ','value ',' value ';' {p_estimated_elem1($2,$4,0,0,$6,$8,$10);} | CORR VAR_ID ',' VAR_ID ',' value ',' prior ',' value ',' value ';' {p_estimated_elem2($2,$4,$6,0,0,$8,$10,$12);} | NAME ',' value ',' prior ',' value ',' value ';' {p_estimated_elem3($1,$3,0,0,$5,$7,$9);} | VAR VAR_ID ',' value ',' value ',' value ',' prior ',' value ',' value ';' {p_estimated_elem1($2,$4,$6,$8,$10,$12,$14);} | CORR VAR_ID ',' VAR_ID ',' value ',' value ',' value ',' prior ',' value ',' value ';' {p_estimated_elem2($2,$4,$6,$8,$10,$12,$14,$16);} | VAR_ID ',' value ',' value ',' value ',' prior ',' value ',' value ';' {p_estimated_elem3($1,$3,$5,$7,$9,$11,$13);} ; prior : BETA_PDF {$$ = "1";} | GAMMA_PDF {$$ = "2";} | NORMAL_PDF {$$ = "3";} | INV_GAMMA_PDF {$$ = "4";} ; value : INUMBER | DNUMBER ; estimation : ESTIMATION ';' {p_estimation();} | ESTIMATION '(' estimation_options ')' ';' {p_estimation();} ; estimation_options : estimation_options ',' estimation_option | estimation_option ; estimation_option : DATAFILE '=' NAME {p_s_option("datafile",$3);} | NOBS '=' INUMBER {p_option("nobs",$3);} | FIRST_OBS '=' INUMBER {p_option("first_obs",$3);} ; varobs : VAROBS {nbr_tmpvar = 0;} varlist4 ';' {print_varobs();} ; %% int yyerror (char *s) { fprintf (stdout, "%s at line %d\n", s, yylineno); exit(0); } /* 03/15/03 MJ added varexo_st and option LINEAR for STEADY 01/01/03 MJ corrected dynatype for filename extension and added dynasave 04/06/02 MJ added optim_weights and optim_weights_list osr_params osr_params_list osr 10/09/02 MJ added calib_var calib_var_list calib 05/26/03 MJ added option LINEAR to MODEL */