On Friday, 10 June 2016 at 15:35:32 UTC, jmh530 wrote:
On Friday, 10 June 2016 at 15:14:02 UTC, ketmar wrote:
1. this is heavily OT. ;-)
I didn't forget to mark it! :-)
2. you may take a look at my gml engine. it has clearly
separated language parser and AST builder (gaem.parser), and
AST->VM compiler (gaem.runner/compiler.d).
I couldn't for the life of me find a link to this.
sorry. Wyatt kindly fixed that for me. ;-)
also, you can replace code generation in compiler with direct
execution, and you will get AST-based interpreter. just create a
new AA with local variables on NodeFCall (this will serve as
"stack frame"), and make `compileExpr` return value instead of
stack slot index. then it is as easy as:
(NodeBinarySub n) => compileExpr(n.el)-compileExpr(n.er);
and so on. also, fix `compileVarAccess` and `compileVarStore` to
use your "stack frame" AA.
this whole bussines is not hard at all. i'd say it is easier than
many other programming tasks.