There are may forms of intermediate representation
It may be very high level(syntax tree) or resemble target code
It may or may not use detailed information about the target machine (data
type size, location of variable etc.)
It may or may not incorporate all the information in the symbol table
Syntax Tree vs Intermediate Code
Intermediate code is linearized representation of syntax tree
Intermediate code is useful when the compiler is to produce extremely
efficient code ( significant amount of analysis of intermediate code is
required, e.g. optimization)