From ec1d496c1148a3aa64578c18d125974cefaa44f0 Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Wed, 23 Oct 2019 13:15:24 +0800 Subject: [PATCH] Fixed bugs in if-else & in_curve_calc --- version1.2/nasal_parser.h | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/version1.2/nasal_parser.h b/version1.2/nasal_parser.h index 8fdaaad..a95141a 100644 --- a/version1.2/nasal_parser.h +++ b/version1.2/nasal_parser.h @@ -677,12 +677,12 @@ abstract_syntax_tree nasal_parser::if_else_expr() } } node.add_child(temp); - temp.set_clear(); if(parse.empty()) return node; get_token(); while(this_token.type==__elsif || else_if_check()) { + temp.set_clear(); temp.set_node_type(__elsif); get_token(); if(this_token.type!=__left_curve) @@ -772,11 +772,11 @@ abstract_syntax_tree nasal_parser::if_else_expr() break; } } + node.add_child(temp); if(parse.empty()) return node; get_token(); } - node.add_child(temp); temp.set_clear(); if(this_token.type==__else) { @@ -837,6 +837,7 @@ abstract_syntax_tree nasal_parser::if_else_expr() break; } } + node.add_child(temp); } else parse.push(this_token); @@ -1268,10 +1269,7 @@ abstract_syntax_tree nasal_parser::mul_div_operator_expr() node=temp; break; case __id: - node.set_clear(); - node.set_node_type(__id); - node.set_var_name(this_token.content); - node.add_child(identifier_call_expr()); + node=identifier_call_expr(); temp.add_child(node); node=temp; break; @@ -1307,9 +1305,7 @@ abstract_syntax_tree nasal_parser::unary_operator_expr() node.add_child(temp); break; case __id: - temp.set_node_type(__id); - temp.set_var_name(this_token.content); - temp.add_child(identifier_call_expr()); + temp=identifier_call_expr(); node.add_child(temp); break; case __left_curve: