From 1a258cd0518316e6414f3ce653132f2c34130e3e Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Wed, 14 Oct 2026 21:18:27 +0300 Subject: [PATCH] apply empty brackets removal until full fix --- src/syntaxer.cpp | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/syntaxer.cpp b/src/syntaxer.cpp index 53e6a6d..61c93e3 100644 --- a/src/syntaxer.cpp +++ b/src/syntaxer.cpp @@ -792,20 +792,28 @@ static void remove_extra_brackets(std::vector& tv) static void process_remove_empty_brackets(std::vector& tv) { pr_debug("Pre-process: remove empty brackets"); - for (int i = 0; i < tv.size() - 1; i++) - { - if (tv[i].t == Expression::Token::OPERATOR - && tv[i].v.o == Expression::Token::OPA - && tv[i+1].t == Expression::Token::OPERATOR - && tv[i+1].v.o == Expression::Token::CPA) - { - std::vector highlight; - highlight.emplace_back(i); - highlight.emplace_back(i+1); - Parser::print_math_vector(tv, highlight); - tv.erase(tv.begin() + i, tv.begin() + i + 2); - i--; + int fix = -1; + while (fix) { + fix = 0; + + for (int i = 0; i < tv.size() - 1; i++) + { + if (tv[i].t == Expression::Token::OPERATOR + && tv[i].v.o == Expression::Token::OPA + && tv[i+1].t == Expression::Token::OPERATOR + && tv[i+1].v.o == Expression::Token::CPA) + { + std::vector highlight; + highlight.emplace_back(i); + highlight.emplace_back(i+1); + Parser::print_math_vector(tv, highlight); + + tv.erase(tv.begin() + i, tv.begin() + i + 2); + i--; + + fix++; + } } } }