An exercise in Programming Language Design, Interpreter and Compiler Construction