Download the BYJU'S Exam Prep App for free GATE/ESE preparation videos & tests - Download the BYJU'S Exam Prep App for free GATE/ESE preparation videos & tests -

Introduction to Compiler Design

The compiler is software that transforms a program documented in a source language or high-level language into a machine language or low-level language.

Table of Contents

What is Compiler?

A compiler is a computer program that helps in translating the computer code from one programming language into another language. Basically, it translates the program written in the source language to the machine language.

The compiling process contains an essential translation operation and error detection.

Compiler

What is a High-Level Programming Language?

In the world of computer science, a high-level programming language is a language with a strong vision and abstraction of the attributes of the computer. High-level programming enables the evolution of a program in a more user-friendly programming context.

What is a Low-Level Programming Language?

A low-level language is a programming language that gives no inference of programming ideas, visions and concepts.

Videos on Compiler Design

Types of Compiler

Majorly, there are three types of compilers:

  • Single Pass Compilers
  • Two Pass Compilers
  • Multipass Compilers

Single Pass Compiler:

When we merge all the phases of compiler design in a single module, then it is called a single pass compiler. In the case of a single pass compiler, the source code converts into machine code.

Compiler Design

Image 2 is also representing the above approach.

Single Pass Complier

Two Pass Compiler:

A processor that runs through the program to be translated twice is considered a two-pass compiler.

Two Pass Compiler

Multipass Compiler:

A program’s source code or syntax tree is processed many times by the multipass compiler. It breaks down a huge programme into numerous smaller programmes and runs them all at the same time. It creates a number of intermediate codes. All of these multipasses use the previous phase’s output as an input. As a result, it necessitates less memory. ‘Wide Compiler’ is another name for it.

Multipass Compiler

Operations of Compiler

The important tasks executed by the compiler are:

  • Breaks down the source programme into chunks and applies grammatical structure to each one.
  • Enables you to create the symbol table and the target programme you’re after from the intermediate representation.
  • Helps in compiling source code and detecting the errors.
  • Organise and save all codes and variables.
  • Separate compilation is supported.
  • Read the full programme, analyse it, and translate it to a semantically similar language.
  • Depending on the type of machine, converting source code to object code.

Steps for Language Processing Systems

Steps for Language Processing Systems

  • Preprocessor: It is an integral component of the compiler. It’s a tool that generates Compiler input. It is concerned with augmentation, macro processing, and language expansion, among other things.
  • Interpreter: It works similarly to a compiler in that it converts high-level language into machine language.
  • Assembler: It changes assembly language code into a language that computers can understand. The output of the assembler, known as an object file, consists of both machine instructions and the information required to store those commands in memory.
  • Linker: It facilitates the linking and combining of numerous object files to produce an executable file. The main responsibility of a linker is to search a programme for modules and to identify the memory address where every module is kept.
  • Loader: The loader is a component of the operating system that handles the loading and execution of executable files. It also determines the size of an application, freeing up additional memory.
  • Cross-compiler: In compiler design, a cross compiler is a forum that aids in the generation of executable code.
  • Source-to-source Compiler: A source-to-source compiler is used when the source code of one programming language is converted into the program code of some other language.