+ All Categories
Home > Engineering > Phases of compiler

Phases of compiler

Date post: 21-Apr-2017
Category:
Upload: karan-deopura
View: 510 times
Download: 136 times
Share this document with a friend
15
LY CE – II BATCH ‘A’ COMPILER DESIGN Made by: - Deopura karan 130410107014 Submitted to: - Nidhi shah Active Learning Assignment
Transcript
Page 1: Phases of compiler

LY CE – II BATCH ‘A’COMPILER DESIGN

Made by: -Deopura karan130410107014

Submitted to: -Nidhi shah

Active Learning Assignment

Page 2: Phases of compiler

Phases Of Compiler

Page 3: Phases of compiler

What is compiler? Compiler is a program which takes one language as input and

translate it into an equivalent another language. Compiler is divided into two parts: Analysis and Synthesis Basic model of compiler can be represented as follows:

Page 4: Phases of compiler

Conceptually, a compiler operates into phases, each of which transform the source program from one representation to another.

Each phase takes input from its previous stage, has its own representation of source program, and feeds its output to the next phase of the compiler.

The compiler has six phases called as lexical analyzer, syntax analyzer, semantic analyzer, intermediate code generator, code optimizer and code generator.

Two other activities, symbol-table management and error handling, are interacting with the six phases of compiler.

Phases of compiler

Page 5: Phases of compiler

Phases of compiler

Page 6: Phases of compiler

To support the phases of compiler, symbol table is maintained. The task of symbol table is to store identifiers used in program.

Basically symbol table is a data structure used to store the information about identifiers.

The symbol table allows us to find the record for each identifier quickly and to store or retrieve data from that record efficiently.

While doing the semantic analysis and intermediate code generation, we need to know what type of identifiers are.

During code generation typically information about how much storage is allocated to identifier is seen.

Symbol-table management

Page 7: Phases of compiler

Error detection and reporting In compilation, each phase detects error. These errors must be

reported to error handler whose task is to handle the error so that the compilation can proceed.

Normally, the errors are reported in the form of message. Large number of error can be detected in syntax analysis phase.

Such error are known as syntax error. During semantic analysis, type mismatch kind of error is usually

detected.

Page 8: Phases of compiler

Lexical analysis The lexical analysis is also known as scanning. It is the phase of compilation in which the complete source code is

scanned and source program is broken up into group of strings called token.

A token is sequence of character having a collective meaning. E.g. Total = count + rate After lexical analysis, the statement is broken up into series of

tokens as follows:identifier total, assignment operator, identifier count, plus

sign, identifier rate

Page 9: Phases of compiler

syntax analysis The syntax analysis is also known as parsing. In this phase token generated by lexical analysis are grouped

together to form a hierarchical structure known as syntax tree.

Page 10: Phases of compiler

semantic analysis Once syntax is checked in the syntax analyzer phase the next phase

i.e. semantic analyzer determines the meaning of the source string. For example meaning of source string means matching parenthesis,

matching if…else statement, performing arithmetic operation of expression that are type compatible or checking operation scope.

Page 11: Phases of compiler

Intermediate code generation The intermediate code is a kind of code which is easy to generate

and this code can be easily converted to target code. This code is in variety of form such as three address code,

quadruple, triple, posix. For example, total = count + rate * 10 Intermediate code using three address code method is

t1 := int_to_float(10)t2 := rate * t1t3 := count + t2total := t3

Page 12: Phases of compiler

Code optimization The code optimization phase attempt to improve the intermediate

code This is necessary to have a faster executing code or less

consumption of memory Thus, by optimizing the code the overall running time of the target

program can be improved.

Page 13: Phases of compiler

Code generation In this phase, target code is generated. The intermediate code instructions are translated into sequence of

machine instruction For example, total = count + rate * 10 Target code will be

MOV rate, R1MUL #10.0, R1MOV count, R2ADD R2, R1MOV R1, total

Page 14: Phases of compiler
Page 15: Phases of compiler

THANK YOU


Recommended