diff --git a/src/Evalvisitor.cpp b/src/Evalvisitor.cpp index 195bd88..7598edf 100644 --- a/src/Evalvisitor.cpp +++ b/src/Evalvisitor.cpp @@ -69,7 +69,7 @@ std::any EvalVisitor::visitExpr_stmt(Python3Parser::Expr_stmtContext *ctx) { if (ctx->augassign()) { auto left_value = visitTestlist(ctx->testlist(0)); auto right_value = visitTestlist(ctx->testlist(1)); - DeQuate(right_value, Variables); + right_value = DeQuate(right_value, Variables); RawVarible *ptr_var = std::any_cast(&left_value); std::vector *ptr_vec = std::any_cast>(&left_value); @@ -245,11 +245,11 @@ std::any EvalVisitor::visitComparison(Python3Parser::ComparisonContext *ctx) { auto arith_expr_list = ctx->arith_expr(); auto last_val = visitArith_expr(arith_expr_list[0]); if (arith_expr_list.size() == 1) return last_val; - DeQuate(last_val, Variables); + last_val = DeQuate(last_val, Variables); auto op_list = ctx->comp_op(); for (int i = 0; i < op_list.size(); i++) { auto cur = visitArith_expr(arith_expr_list[i + 1]); - DeQuate(cur, Variables); + cur = DeQuate(cur, Variables); bool ok = false; if (op_list[i]->GREATER_THAN()) ok = Greater(last_val, cur); @@ -280,10 +280,10 @@ std::any EvalVisitor::visitArith_expr(Python3Parser::Arith_exprContext *ctx) { auto ans = visitTerm(term_list[0]); if (term_list.size() == 1) return ans; auto op_list = ctx->addorsub_op(); - DeQuate(ans, Variables); + ans = DeQuate(ans, Variables); for (int i = 0; i < op_list.size(); i++) { auto cur = visitTerm(term_list[i + 1]); - DeQuate(cur, Variables); + cur = DeQuate(cur, Variables); if (op_list[i]->ADD()) SelfAdd(ans, cur); else if (op_list[i]->MINUS()) @@ -303,10 +303,10 @@ std::any EvalVisitor::visitTerm(Python3Parser::TermContext *ctx) { auto ans = visitFactor(factor_list[0]); if (factor_list.size() == 1) return ans; auto op_list = ctx->muldivmod_op(); - DeQuate(ans, Variables); + ans = DeQuate(ans, Variables); for (int i = 0; i < op_list.size(); i++) { auto cur = visitFactor(factor_list[i + 1]); - DeQuate(cur, Variables); + cur = DeQuate(cur, Variables); if (op_list[i]->STAR()) SelfMul(ans, cur); else if (op_list[i]->DIV())