decompiler unary precedence
This commit is contained in:
parent
ec1513100e
commit
4080dcdc30
@ -3102,11 +3102,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -3102,11 +3102,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -3096,11 +3096,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -3096,11 +3096,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -3096,11 +3096,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -3102,11 +3102,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -3111,11 +3111,21 @@ void decompiler::process_expr_or(const gsc::context_ptr& ctx, const gsc::expr_or
|
||||
void decompiler::process_expr_complement(const gsc::context_ptr& ctx, const gsc::expr_complement_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_not(const gsc::context_ptr& ctx, const gsc::expr_not_ptr& expr)
|
||||
{
|
||||
process_expr(ctx, expr->rvalue);
|
||||
|
||||
if(expr->rvalue.as_node->is_binary())
|
||||
{
|
||||
expr->rvalue = expr_ptr(std::make_unique<gsc::node_expr_paren>(std::move(expr->rvalue)));
|
||||
}
|
||||
}
|
||||
|
||||
void decompiler::process_expr_call(const gsc::context_ptr& ctx, const gsc::expr_call_ptr& expr)
|
||||
|
@ -539,6 +539,34 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
auto is_binary() -> bool
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case gsc::node_t::expr_or:
|
||||
case gsc::node_t::expr_and:
|
||||
case gsc::node_t::expr_bitwise_or:
|
||||
case gsc::node_t::expr_bitwise_exor:
|
||||
case gsc::node_t::expr_bitwise_and:
|
||||
case gsc::node_t::expr_equality:
|
||||
case gsc::node_t::expr_inequality:
|
||||
case gsc::node_t::expr_less:
|
||||
case gsc::node_t::expr_greater:
|
||||
case gsc::node_t::expr_less_equal:
|
||||
case gsc::node_t::expr_greater_equal:
|
||||
case gsc::node_t::expr_shift_left:
|
||||
case gsc::node_t::expr_shift_right:
|
||||
case gsc::node_t::expr_add:
|
||||
case gsc::node_t::expr_sub:
|
||||
case gsc::node_t::expr_mult:
|
||||
case gsc::node_t::expr_div:
|
||||
case gsc::node_t::expr_mod:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
auto precedence() -> std::uint8_t
|
||||
{
|
||||
switch(type)
|
||||
|
Loading…
Reference in New Issue
Block a user