update decompiler precedence

This commit is contained in:
xensik 2021-05-13 18:36:48 +02:00
parent 4080dcdc30
commit 3cc43c7ae9
8 changed files with 15 additions and 15 deletions

View File

@ -3067,7 +3067,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3087,7 +3087,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -3067,7 +3067,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3087,7 +3087,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -3061,7 +3061,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3081,7 +3081,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -3061,7 +3061,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3081,7 +3081,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -3061,7 +3061,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3081,7 +3081,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -3067,7 +3067,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3087,7 +3087,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -3076,7 +3076,7 @@ void decompiler::process_expr_binary(const gsc::context_ptr& ctx, const gsc::exp
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}
@ -3096,7 +3096,7 @@ void decompiler::process_expr_and(const gsc::context_ptr& ctx, const gsc::expr_a
prec = expr->rvalue.as_node->precedence();
if(prec && prec < expr->precedence())
if(prec && prec < expr->precedence() || (prec == expr->precedence() && expr->type == expr->rvalue.as_node->type))
{
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
}

View File

@ -949,7 +949,7 @@ struct node_expr_paren : public node
auto print() -> std::string override
{
return "(" + expr.as_node->print() + ")";
return "( " + expr.as_node->print() + " )";
}
friend bool operator==(const node_expr_paren& lhs, const node_expr_paren& rhs)