cf http://www.inf.ethz.ch/personal/wirth/Articles/CompilerConstruction/CBE.pdf