keep track of all times an undeclared variable is encountered
parent
bfd239aa26
commit
cfae273038
|
@ -359,10 +359,13 @@ ParsingDriver::add_model_variable(string *name)
|
|||
try
|
||||
{
|
||||
symb_id = mod_file->symbol_table.getID(*name);
|
||||
if (undeclared_model_vars.find(*name) != undeclared_model_vars.end())
|
||||
model_error("Unknown symbol: " + *name);
|
||||
}
|
||||
catch (SymbolTable::UnknownSymbolNameException &e)
|
||||
{
|
||||
declare_exogenous(new string (*name));
|
||||
undeclared_model_vars.insert(*name);
|
||||
symb_id = mod_file->symbol_table.getID(*name);
|
||||
}
|
||||
delete name;
|
||||
|
@ -2590,6 +2593,9 @@ ParsingDriver::add_model_var_or_external_function(string *function_name, bool in
|
|||
}
|
||||
else
|
||||
{ // e.g. model_var(lag) => ADD MODEL VARIABLE WITH LEAD (NumConstNode)/LAG (UnaryOpNode)
|
||||
if (undeclared_model_vars.find(*function_name) != undeclared_model_vars.end())
|
||||
model_error("Unknown symbol: " + *function_name);
|
||||
|
||||
if (stack_external_function_args.top().size() != 1)
|
||||
error(string("Symbol ") + *function_name + string(" is being treated as if it were a function (i.e., has received more than one argument)."));
|
||||
|
||||
|
|
|
@ -184,6 +184,8 @@ private:
|
|||
//! Temporary storage for current restriction number in svar_identification block
|
||||
map<int,int> svar_Qi_restriction_nbr;
|
||||
map<int,int> svar_Ri_restriction_nbr;
|
||||
//! Stores undeclared model variables
|
||||
set<string> undeclared_model_vars;
|
||||
//! Temporary storage for restriction type
|
||||
enum SvarRestrictionType
|
||||
{
|
||||
|
|
|
@ -341,7 +341,8 @@ XFAIL_MODFILES = ramst_xfail.mod \
|
|||
estimation/fs2000_mixed_ML_xfail.mod \
|
||||
estimation/fs2000_stochastic_singularity_xfail.mod \
|
||||
identification/ident_unit_root/ident_unit_root_xfail.mod \
|
||||
steady_state/Linear_steady_state_xfail.mod
|
||||
steady_state/Linear_steady_state_xfail.mod \
|
||||
example1_undeclared_vars_xfail.mod
|
||||
|
||||
MFILES = initval_file/ramst_initval_file_data.m
|
||||
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
// Example 1 from Collard's guide to Dynare
|
||||
var y, k, a, h, b;
|
||||
varexo e;
|
||||
|
||||
verbatim;
|
||||
% I want these comments included in
|
||||
% example1.m 1999q1 1999y
|
||||
%
|
||||
var = 1;
|
||||
end;
|
||||
|
||||
parameters beta, rho, alpha, delta, theta, psi;
|
||||
|
||||
alpha = 0.36;
|
||||
rho = 0.95;
|
||||
tau = 0.025;
|
||||
beta = 0.99;
|
||||
delta = 0.025;
|
||||
psi = 0;
|
||||
theta = 2.95;
|
||||
|
||||
phi = 0.1;
|
||||
|
||||
model;
|
||||
c*theta*h^(1+psi)=(1-alpha)*y;
|
||||
k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
|
||||
*(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
|
||||
y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
|
||||
k = exp(b)*(y-c)+(1-delta)*k(-1);
|
||||
a = rho*a(-1)+tau*b(-1) + e;
|
||||
b = tau*a(-1)+rho*b(-1) + u;
|
||||
end;
|
||||
|
||||
initval;
|
||||
y = 1.08068253095672;
|
||||
c = 0.80359242014163;
|
||||
h = 0.29175631001732;
|
||||
k = 11.08360443260358;
|
||||
a = 0;
|
||||
b = 0;
|
||||
e = 0;
|
||||
u = 0;
|
||||
end;
|
||||
|
||||
shocks;
|
||||
var e; stderr 0.009;
|
||||
var u; stderr 0.009;
|
||||
var e, u = phi*0.009*0.009;
|
||||
end;
|
||||
|
||||
stoch_simul;
|
Loading…
Reference in New Issue