Show understanding of the need for: a compiler for the translation of a high-level language program

5.2 Language Translators

What is a Translator?

A translator takes a program written in a high‑level language (like Python or Java) and turns it into something the computer can understand (machine code). Think of it like a human translator turning a book from English into Spanish. The computer, however, only speaks its own “language” – binary instructions.

Types of Translators

  • Interpreter – reads the program line‑by‑line and executes it immediately. Like a live translator speaking as the author reads.
  • Compiler – translates the whole program into machine code before execution. Like a chef who pre‑cooks a dish so you can eat it instantly.
  • Assembler – converts assembly language (human‑readable machine code) into binary. Think of it as a shorthand to full recipe.

Why Do We Need a Compiler?

1️⃣ Speed – Once compiled, the program runs directly on the hardware, no extra translation time. 2️⃣ Portability – The same source code can be compiled for different machines (CPU, OS). 3️⃣ Optimization – Compilers can rearrange code to use fewer CPU cycles or less memory. 4️⃣ Safety – Compile‑time checks catch many errors before the program runs.

Stages of a Compiler

Stage What Happens?
Lexical Analysis Breaks source code into tokens (keywords, identifiers, numbers).
Syntax Analysis Builds a parse tree to check grammar.
Semantic Analysis Checks types, scope, and other language rules.
Intermediate Code Generation Creates a platform‑independent representation.
Optimization Improves performance and reduces size.
Code Generation Produces machine code or assembly.

Exam Tip 🚀

Remember the flow: Lexical → Syntax → Semantic → Intermediate → Optimization → Code Generation.
When asked to explain a compiler, sketch this pipeline and give a short example for each stage.
Use the analogy of a chef (compiler) vs. a live translator (interpreter) to show why compilation is faster after the first run.

Example: From Source to Machine Code

Consider the simple statement: int x = 5;

  • Lexical: int, x, =, 5, ;
  • Syntax: declaration → type identifier = constant ;
  • Semantic: int is a valid type; x is a new variable.
  • Intermediate: LOAD_CONST 5, STORE_VAR x
  • Optimization: combine into a single machine instruction if possible.
  • Code: 0x01 0x05 0x02 0x00 (hypothetical binary).

Quick Review Questions

  1. What is the main difference between a compiler and an interpreter?
  2. List the stages of a compiler and give a one‑sentence description of each.
  3. Why can a compiler produce faster running programs than an interpreter?

Revision

Log in to practice.

2 views 0 suggestions