diff --git a/src/midend/SysYIRGenerator.cpp b/src/midend/SysYIRGenerator.cpp index 2e0e910..50c4114 100644 --- a/src/midend/SysYIRGenerator.cpp +++ b/src/midend/SysYIRGenerator.cpp @@ -262,10 +262,12 @@ void SysYIRGenerator::compute() { } // 弹出BinaryExpStack的表达式 - while(begin < end) { + int count = end - begin; + for (int i = 0; i < count; i++) { BinaryExpStack.pop_back(); - BinaryExpLenStack.back()--; - end--; + } + if (!BinaryExpLenStack.empty()) { + BinaryExpLenStack.back() -= count; } // 计算后缀表达式