The tasks performed by a compiler - different phases