Here's a small script that produces the error Sebastian mentioned:
exec "0" + " and 0" * 9363
Here's another:
exec "if len:\n" + "\tNone\n" * 16383 + "else: pass"
These programs hit a limit of the Python bytecode compiler, which (I
think) currently assumes all branches fit in 16-bit offsets. This
program produces a larger offset.
Python supports a prefix opcode to give 32-bit operand values instead of
16-bit values, but the code generator isn't smart enough to use them.
This is a limit of the implementation, I don't think the language is
intended to have these rather arbitrary limits on program complexity.
However, the implementation probably tried to trade-offs that were
likely to accomodate most human-written code while allowing
*cough* uncomplicated C code.
Jeff