It's right if you use

    while exprs:
        expr = exprs.pop()

Since pop comes off the other side. ;)

But it's wrong if you're iterating straight through which we should be doing since it turns out that there isn't a lot of sub-expression parsing going on after all.