CODE-0006 · grok-4.5 (high)
def eval_expr(s):
    if not isinstance(s, str):
        raise ValueError("malformed expression")

    n = len(s)
    i = 0

    def skip_ws():
        nonlocal i
        while i < n and s[i].isspace():
            i += 1

    def peek():
        skip_ws()
        if i >= n:
            return None
        return s[i]

    def raise_malformed():
        raise ValueError("malformed expression")

    def parse_number():
        nonlocal i
        skip_ws()
        start = i
        if i < n and s[i] in '+-':
            # numbers themselves don't include leading unary; handled by unary
            pass
        has_digit = False
        while i < n and s[i].isdigit():
            has_digit = True
            i += 1
        if i < n and s[i] == '.':
            i += 1
            while i < n and s[i].isdigit():
                has_digit = True
                i += 1
        if not has_digit:
            raise_malformed()
        text = s[start:i]
        if '.' in text:
            return float(text)
        return int(text)

    def parse_primary():
        nonlocal i
        c = peek()
        if c is None:
            raise_malformed()
        if c == '(':
            i += 1
            val = parse_expr()
            if peek() != ')':
                raise_malformed()
            i += 1
            return val
        if c.isdigit() or c == '.':
            return parse_number()
        raise_malformed()

    def parse_unary():
        nonlocal i
        c = peek()
        if c == '+':
            i += 1
            return parse_unary()
        if c == '-':
            i += 1
            return -parse_unary()
        return parse_primary()

    def parse_term():
        nonlocal i
        left = parse_unary()
        while True:
            c = peek()
            if c == '*':
                i += 1
                right = parse_unary()
                left = left * right
            elif c == '/':
                i += 1
                right = parse_unary()
                if right == 0:
                    raise ValueError("division by zero")
                left = left / right
            else:
                break
        return left

    def parse_expr():
        nonlocal i
        left = parse_term()
        while True:
            c = peek()
            if c == '+':
                i += 1
                right = parse_term()
                left = left + right
            elif c == '-':
                i += 1
                right = parse_term()
                left = left - right
            else:
                break
        return left

    skip_ws()
    if i >= n:
        raise_malformed()
    result = parse_expr()
    skip_ws()
    if i < n:
        raise_malformed()

    if isinstance(result, float) and result.is_integer():
        return int(result)
    if isinstance(result, int):
        return result
    return result