I've attempted a rewrite from AST parse-and-process stuff to a version based on doing horrible things with the eval builtin. Fortunately, if I'm understanding my own code correctly, most of the logic lives outside the code I'm replacing, which essentially acts as glue code for moving around a bunch of data types.
If this doesn't work out, and maybe even if it does, I think I should try to be a little more rigorous in my requirements, because the way I'm doing this now, basically creating a weird sandbox interpreter that sort of operates solely on the outermost representation of the program data, it's, um, weird and uncomfortable.
As per usual, I'm getting this highly complicated code put together pretty late at night, so my plan is to publish this entry, set up the code paths, run the tests, and call it a night.
And I'm just about ready to do that. Wrapping up now...