This seems interesting but I dunno if it's useful.
Here is the same parser done with send().

It's basically an attempt to implement as much as possible in the
erstwhile machinery of the COLA so as to ease porting to the AVR later. I
think that other than list.append() and function calls it is mostly done
by send().

Now to fold in the evaluator machinery from nonon.py and we have a cute
little system.  It still doesn't handle those wacky syntax forms yet.
Calm that repr down a little.
Some polish.
Eval with Eval.