CODE-0006 · gpt-5.6-sol (max)
def eval_expr(s):
    if not isinstance(s, str):
        raise ValueError("Expression must be a string")

    values = []
    operators = []
    precedence = {
        "+": 1,
        "-": 1,
        "*": 2,
        "/": 2,
        "u+": 3,
        "u-": 3,
    }

    def apply_operator(op):
        if op in ("u+", "u-"):
            if not values:
                raise ValueError("Malformed expression")
            value = values.pop()
            values.append(value if op == "u+" else -value)
            return

        if len(values) < 2:
            raise ValueError("Malformed expression")

        right = values.pop()
        left = values.pop()

        if op == "+":
            result = left + right
        elif op == "-":
            result = left - right
        elif op == "*":
            result = left * right
        elif op == "/":
            if right == 0:
                raise ValueError("Division by zero")
            result = left / right
        else:
            raise ValueError("Malformed expression")

        values.append(result)

    i = 0
    length = len(s)
    expecting_operand = True

    while True:
        while i < length and s[i].isspace():
            i += 1

        if i >= length:
            break

        ch = s[i]

        if expecting_operand:
            if ch in "+-":
                operators.append("u" + ch)
                i += 1
                continue

            if ch == "(":
                operators.append(ch)
                i += 1
                continue

            if ("0" <= ch <= "9") or ch == ".":
                start = i

                while i < length and "0" <= s[i] <= "9":
                    i += 1
                digits_before = i - start

                has_dot = i < length and s[i] == "."
                digits_after = 0

                if has_dot:
                    i += 1
                    fractional_start = i
                    while i < length and "0" <= s[i] <= "9":
                        i += 1
                    digits_after = i - fractional_start

                if digits_before == 0 and digits_after == 0:
                    raise ValueError("Malformed number")

                if has_dot:
                    try:
                        number = float(s[start:i])
                    except (ValueError, OverflowError):
                        raise ValueError("Malformed number") from None
                else:
                    number = 0
                    for digit in s[start:i]:
                        number = number * 10 + ord(digit) - 48

                values.append(number)
                expecting_operand = False
                continue

            raise ValueError("Malformed expression")

        if ch in "+-*/":
            while (
                operators
                and operators[-1] != "("
                and precedence[operators[-1]] >= precedence[ch]
            ):
                apply_operator(operators.pop())

            operators.append(ch)
            i += 1
            expecting_operand = True
            continue

        if ch == ")":
            matched = False

            while operators:
                op = operators.pop()
                if op == "(":
                    matched = True
                    break
                apply_operator(op)

            if not matched:
                raise ValueError("Mismatched parentheses")

            i += 1
            continue

        raise ValueError("Malformed expression")

    if expecting_operand:
        raise ValueError("Malformed expression")

    while operators:
        op = operators.pop()
        if op == "(":
            raise ValueError("Mismatched parentheses")
        apply_operator(op)

    if len(values) != 1:
        raise ValueError("Malformed expression")

    result = values[0]
    if isinstance(result, float) and result.is_integer():
        return int(result)
    return result