Next: MonoBURG, Previous: Flex & Bison, Up: Tools [Contents][Index]
HAVM is a Tree
(HIR or LIR)
programs interpreter. It was written by Robert Anisko so that
EPITA students could exercise their compiler projects before
the final jump to assembly code. It is implemented in Haskell, a pure
non strict functional language very well suited for this kind of
symbolic processing. HAVM was coined on both Haskell, and
VM standing for Virtual Machine.
Resources:
jump
break the
recursive structure of the program, i.e., when a jump
goes
outside its enclosing structure (seq
, or eseq
etc.).
Examples of Tiger sources onto which HAVM is likely to behave incorrectly include:
while 1 do print_int((break; 1))
or
if 0 | 0 then 0 else 1
See HAVM’s documentation for details, node “Known Problems”.