fix post-processing

This commit is contained in:
2026-10-14 21:49:59 +03:00
parent 10e0a487ab
commit e837671d15
+4 -25
View File
@@ -1120,8 +1120,6 @@ static int correct_operation_priorities(std::vector<Expression::Token>& tv, int
{ {
int corrections = 0; int corrections = 0;
Expression::Token::Operator last_op = Expression::Token::ADD;
for (int i = 0, same_lvl_op_cnt = -1, relative_level = -op; i < tv.size(); i++) for (int i = 0, same_lvl_op_cnt = -1, relative_level = -op; i < tv.size(); i++)
{ {
Expression::Token& tok = tv[i]; Expression::Token& tok = tv[i];
@@ -1143,7 +1141,6 @@ static int correct_operation_priorities(std::vector<Expression::Token>& tv, int
} }
else if (relative_level == 0) else if (relative_level == 0)
{ {
// same operation inner priority
int target_op; int target_op;
switch (ip) switch (ip)
{ {
@@ -1155,26 +1152,13 @@ static int correct_operation_priorities(std::vector<Expression::Token>& tv, int
break; break;
} }
int same_op_ip; if (rank_op(tok.v.o) == ip && target_op)
switch (ip)
{ {
case 0:
same_op_ip = tok.v.o == Expression::Token::ADD || tok.v.o == Expression::Token::SUB;
break;
case 1:
same_op_ip = tok.v.o == Expression::Token::MUL || tok.v.o == Expression::Token::DIV;
break;
}
if (same_op_ip && tok.v.o == last_op)
{
last_op = tok.v.o;
same_lvl_op_cnt++; same_lvl_op_cnt++;
if (same_lvl_op_cnt >= 1 && target_op) if (same_lvl_op_cnt >= 1)
{ {
same_lvl_op_cnt = 0; same_lvl_op_cnt = 0;
corrections++; corrections++;
switch (ip) switch (ip)
@@ -1201,14 +1185,9 @@ static int correct_operation_priorities(std::vector<Expression::Token>& tv, int
relative_level++; relative_level++;
} }
} }
else else if (rank_op(tok.v.o) < ip)
{ {
if (rank_op(tok.v.o) < ip) same_lvl_op_cnt = -1;
{
same_lvl_op_cnt = 0;
}
last_op = tok.v.o;
} }
} }