1This could of course just as easily be an interpreter; however in the interests of brevity I use the term ‘compiler’ throughout this paper.