update decompiler precedence
This commit is contained in:
parent
4080dcdc30
commit
3cc43c7ae9
@ -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)));
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user