Sun, May 01, 2005
$ python 3vm.py factorial.3acYou'll see a trace of memory accesses and the output of the program.
(Note: now that I've actually been able to run the program, I've updated the original factorial program and its corresponding 3AC code, and added a HLT instruction to the 3AC definition.)
The parser was generated with the Coco/R compiler generator. To add semantic actions, you can either read the documentation, edit example.atg and re-generate the compiler, or you can modify the C code directly.
I chose Coco/R instead of YACC or Bison because it generates Recursive-Descent parsers instead of LALR(1) parsers. You are, of course, limited to LL(1) languges, but the resulting code is significantly easier to read and debug.