Comment by userbinator
2 months ago
Rather than having the recursive descent parser generate code, I just had it generate executable data structures - subclasses of Statement and Expression base classes, with virtual Execute() and Value() methods respectively, so that the parsed program could be run by calling program->Execute() on the top level object.
That is basically an AST interpreter.
No - there was no separation of AST and interpreter. You could consider it just as a directly executable AST.