preprocessor: bug fix in setting prior_variance

issue#70
Houtan Bastani 2011-12-22 15:14:00 +01:00
parent 340a9fb5d0
commit c62d52a576
3 changed files with 10 additions and 10 deletions

View File

@ -1223,16 +1223,16 @@ subsamples_name_list : subsamples_name_list COMMA o_subsample_name
| o_subsample_name
;
prior : symbol '.' PRIOR '(' prior_options_list ')' ';'
prior : symbol '.' PRIOR { driver.set_prior_variance(); } '(' prior_options_list ')' ';'
{ driver.set_prior($1); }
| symbol '.' symbol '.' PRIOR '(' prior_options_list ')' ';'
| symbol '.' symbol '.' PRIOR { driver.set_prior_variance(); } '(' prior_options_list ')' ';'
{
driver.add_subsample_range(new string (*$1), $3);
driver.set_prior($1);
}
| STD '(' symbol ')' '.' PRIOR '(' prior_options_list ')' ';'
| STD '(' symbol ')' '.' PRIOR { driver.set_prior_variance(); } '(' prior_options_list ')' ';'
{ driver.set_std_prior($3); }
| CORR '(' symbol COMMA symbol')' '.' PRIOR '(' prior_options_list ')' ';'
| CORR '(' symbol COMMA symbol')' '.' PRIOR { driver.set_prior_variance(); } '(' prior_options_list ')' ';'
{ driver.set_corr_prior($3, $5); }
;
@ -2000,7 +2000,7 @@ o_init : INIT EQUAL signed_number { driver.option_num("init", $3); };
o_bounds : BOUNDS EQUAL vec_value_w_inf { driver.option_num("bounds", $3); };
o_domain : DOMAINN EQUAL vec_value { driver.option_num("domain", $3); };
o_interval : INTERVAL EQUAL vec_value { driver.option_num("interval", $3); };
o_variance : VARIANCE EQUAL expression { driver.add_expression_to_prior_statement($3); }
o_variance : VARIANCE EQUAL expression { driver.set_prior_variance($3); }
o_new_estimation_data_nobs : NOBS EQUAL INT_NUMBER { driver.option_num("nobs", $3); };
o_prefilter : PREFILTER EQUAL INT_NUMBER { driver.option_num("prefilter", $3); };
o_presample : PRESAMPLE EQUAL INT_NUMBER { driver.option_num("presample", $3); };

View File

@ -1305,12 +1305,12 @@ ParsingDriver::set_prior(string *name)
check_symbol_is_parameter(name);
mod_file->addStatement(new PriorStatement(*name, prior_variance, options_list));
options_list.clear();
prior_variance = NULL;
set_prior_variance();
delete name;
}
void
ParsingDriver::add_expression_to_prior_statement(expr_t variance)
ParsingDriver::set_prior_variance(expr_t variance)
{
prior_variance = variance;
}
@ -1346,7 +1346,7 @@ ParsingDriver::set_std_prior(string *name)
check_symbol_is_endogenous_or_exogenous(name);
mod_file->addStatement(new StdPriorStatement(*name, prior_variance, options_list, mod_file->symbol_table));
options_list.clear();
prior_variance = NULL;
set_prior_variance();
delete name;
}
@ -1366,7 +1366,7 @@ ParsingDriver::set_corr_prior(string *name1, string *name2)
check_symbol_is_endogenous_or_exogenous(name2);
mod_file->addStatement(new CorrPriorStatement(*name1, *name2, prior_variance, options_list, mod_file->symbol_table));
options_list.clear();
prior_variance = NULL;
set_prior_variance();
delete name1;
delete name2;
}

View File

@ -389,7 +389,7 @@ public:
//! Sets the prior for a parameter
void set_prior(string *arg);
//! Adds the variance option to its temporary holding place
void add_expression_to_prior_statement(expr_t variance);
void set_prior_variance(expr_t variance=NULL);
//! Sets the options for a parameter
void set_options(string *arg);
//! Sets the prior for estimated std dev