But ceval.c is another beast entirely, being full of macros and gotos, not to mention being 5000 lines long.
The interpreter loop starts here: https://github.com/python/cpython/blob/master/Python/ceval.c...
So I appreciate seeing the algorithm laid out in Python. In particular it clarifies that there are three separate stacks:
1. call stack
2. block stack for try/except, loops, etc.
3. value stack for evaluating expressions
It also clarifies how generators work, which IMO is very difficult to follow from the C source (i.e. without a design doc to go along).
I wrote about some of my recent work here: https://www.reddit.com/r/oilshell/comments/8b0n6z/opyreadmem...
BTW I have shell scripts running under triple interpretation: CPython, byterun, and OSH itself :) This is just an experiment toward writing my own VM, not for the final product. The release binary doesn't use byterun at all.
EDIT: There is also a companion bytecode compiler that I mention here: http://www.oilshell.org/blog/2018/03/27.html (but I'm not using it, I'm using the one that used to be in the Python 2 stdlib, which is entirely separate from the one used by the interpreter itself.)