it makes implementation of lexical analysis and syntax analysis easier
syntax directed translations can be written for intermediate code generation
it enhances the portability of the front end of the compiler
it is not possible to generate code for real machines directly from high level language programs