Intermediate code generation Part 1