small change to avoid an extra conditional

time-shift
Houtan Bastani 2019-01-15 11:23:59 +01:00
parent 4dbbdb2c09
commit 556b5b6e88
No known key found for this signature in database
GPG Key ID: 000094FB955BE169
1 changed files with 18 additions and 20 deletions

View File

@ -93,31 +93,29 @@ while ~isempty(plus_node) || ~isempty(last_node_to_parse)
node_to_parse = last_node_to_parse;
last_node_to_parse = [];
end
if strcmp(node_to_parse.node_type, 'VariableNode') || strcmp(node_to_parse.node_type, 'UnaryOpNode')
if strcmp(node_to_parse.node_type, 'VariableNode')
if strcmp(node_to_parse.type, 'parameter')
% Intercept
Xtmp = dseries(ones(ds.nobs, 1), ds.firstdate, node_to_parse.name);
elseif strcmp(node_to_parse.type, 'exogenous') && ~any(strcmp(ds.name, node_to_parse.name))
% Residual if not contained in ds
if isempty(residual)
residual = node_to_parse.name;
else
parsing_error(['only one residual allowed per equation; encountered ' residual ' & ' node_to_parse.name], line);
end
elseif strcmp(node_to_parse.type, 'endogenous') ...
|| (strcmp(node_to_parse.type, 'exogenous') && any(strcmp(ds.name, node_to_parse.name)))
% Subtract VariableNode from LHS
% NB: treat exogenous that exist in ds as endogenous
lhssub = lhssub + evalNode(ds, node_to_parse, line, dseries());
if strcmp(node_to_parse.node_type, 'VariableNode')
if strcmp(node_to_parse.type, 'parameter')
% Intercept
Xtmp = dseries(ones(ds.nobs, 1), ds.firstdate, node_to_parse.name);
elseif strcmp(node_to_parse.type, 'exogenous') && ~any(strcmp(ds.name, node_to_parse.name))
% Residual if not contained in ds
if isempty(residual)
residual = node_to_parse.name;
else
parsing_error('unexpected variable type found', line);
parsing_error(['only one residual allowed per equation; encountered ' residual ' & ' node_to_parse.name], line);
end
else
% Subtract UnaryOpNode from LHS
elseif strcmp(node_to_parse.type, 'endogenous') ...
|| (strcmp(node_to_parse.type, 'exogenous') && any(strcmp(ds.name, node_to_parse.name)))
% Subtract VariableNode from LHS
% NB: treat exogenous that exist in ds as endogenous
lhssub = lhssub + evalNode(ds, node_to_parse, line, dseries());
else
parsing_error('unexpected variable type found', line);
end
elseif strcmp(node_to_parse.node_type, 'UnaryOpNode')
% Subtract UnaryOpNode from LHS
% NB: treat exogenous that exist in ds as endogenous
lhssub = lhssub + evalNode(ds, node_to_parse, line, dseries());
elseif strcmp(node_to_parse.node_type, 'BinaryOpNode') && strcmp(node_to_parse.op, '*')
% Parse param_expr * endog_expr
Xtmp = parseTimesNode(ds, node_to_parse, line);