That doesn't solve his problem though. The problem isn't
that IF matches a label, the problem is that
the parser is trying to match IF to be a label.
That means the parser has already rejected the line to be
of the form opcode operand(s).

Hence, the parsing of the IF statement failed.
Where does it fail? Easy, var_value returns
the value from a code block. It's looking up the value of
rmove, but that variable wasn't set. Instead,
the variable RMOVE was set.

The problem here is that the parser is already doing the
calculations, and causing the parse the language differently
on the outcome of those calculations. Icky.

Anything more complicated that a calculater should probably
have separate compile and runtime phases.

Good idea, but this is for homework! ;) There is a Python
course being taught this semester by one of my favorite
professors. This is their second project, and my first
thought upon seeing it (other than they should be learning
Perl instead) was to attack the problem with P::RD. At
first, PodMaster's suggestion worked, then i changed my
code and i am still having a hard a time matching that
darned 'IF'. Welcome back man, it's been too long. ;)