Fixed bugs in if-else & in_curve_calc

This commit is contained in:
Valk Richard Li 2019-10-23 13:15:24 +08:00 committed by GitHub
parent 1a74e67abd
commit ec1d496c11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 9 deletions

View File

@ -677,12 +677,12 @@ abstract_syntax_tree nasal_parser::if_else_expr()
} }
} }
node.add_child(temp); node.add_child(temp);
temp.set_clear();
if(parse.empty()) if(parse.empty())
return node; return node;
get_token(); get_token();
while(this_token.type==__elsif || else_if_check()) while(this_token.type==__elsif || else_if_check())
{ {
temp.set_clear();
temp.set_node_type(__elsif); temp.set_node_type(__elsif);
get_token(); get_token();
if(this_token.type!=__left_curve) if(this_token.type!=__left_curve)
@ -772,11 +772,11 @@ abstract_syntax_tree nasal_parser::if_else_expr()
break; break;
} }
} }
node.add_child(temp);
if(parse.empty()) if(parse.empty())
return node; return node;
get_token(); get_token();
} }
node.add_child(temp);
temp.set_clear(); temp.set_clear();
if(this_token.type==__else) if(this_token.type==__else)
{ {
@ -837,6 +837,7 @@ abstract_syntax_tree nasal_parser::if_else_expr()
break; break;
} }
} }
node.add_child(temp);
} }
else else
parse.push(this_token); parse.push(this_token);
@ -1268,10 +1269,7 @@ abstract_syntax_tree nasal_parser::mul_div_operator_expr()
node=temp; node=temp;
break; break;
case __id: case __id:
node.set_clear(); node=identifier_call_expr();
node.set_node_type(__id);
node.set_var_name(this_token.content);
node.add_child(identifier_call_expr());
temp.add_child(node); temp.add_child(node);
node=temp; node=temp;
break; break;
@ -1307,9 +1305,7 @@ abstract_syntax_tree nasal_parser::unary_operator_expr()
node.add_child(temp); node.add_child(temp);
break; break;
case __id: case __id:
temp.set_node_type(__id); temp=identifier_call_expr();
temp.set_var_name(this_token.content);
temp.add_child(identifier_call_expr());
node.add_child(temp); node.add_child(temp);
break; break;
case __left_curve: case __left_curve: