SlideShare une entreprise Scribd logo
1  sur  129
1.1 Compilers:
• A compiler is a program that reads a program
written in one language –– the source
language –– and translates it into an
equivalent program in another language ––
the target language

1
1.1 Compilers:
• As an important part of this translation
process, the compiler reports to its user the
presence of errors in the source program.

2
1.1 Compilers:

3
1.1 Compilers:
• At first glance, the variety of compilers may
appear overwhelming.
• There
are
thousands
of
source
languages,
ranging
from
traditional
programming languages such as FORTRAN and
Pascal to specialized languages.

4
1.1 Compilers:
• Target languages are equally as varied;
• A target language may be another
programming language, or the machine
language of any computer.

5
1.1 Compilers:
• Compilers are sometimes classified as:
– single-pass
– multi-pass
– load-and-go
– Debugging
– optimizing

6
1.1 Compilers:
• The basic tasks that any compiler must
perform are essentially the same.
• By understanding these tasks, we can
construct compilers for a wide variety of
source languages and target machines using
the same basic techniques.

7
1.1 Compilers:
• Throughout the 1950’s, compilers were
considered notoriously difficult programs to
write.

• The first FORTRAN compiler, for example, took
18 staff-years to implement.

8
9
The Analysis-Synthesis Model of
Compilation:
• There are two parts of compilation:
– Analysis
– Synthesis

10
The Analysis-Synthesis Model of
Compilation:
• The analysis part breaks up the source
program into constituent pieces
• creates an intermediate representation of the
source program.

11
The Analysis-Synthesis Model of
Compilation:
• The synthesis part constructs the desired
target program from the intermediate
representation.

12
The Analysis-Synthesis Model of
Compilation:
source
code

Front
End

IR

Back
End

machine
code

errors

13
The Analysis-Synthesis Model of
Compilation:
• During analysis, the operations implied by the
source program are determined and recorded
in a hierarchical structure called a tree.
• Often, a special kind of tree called a syntax
tree is used.

14
The Analysis-Synthesis Model of
Compilation:
• In syntax tree each node represents an
operation and the children of the node
represent the arguments of the operation.
• For example, a syntax tree of an assignment
statement is shown below.

15
The Analysis-Synthesis Model of
Compilation:

16
17
Analysis of the Source Program:
• In compiling, analysis consists of three phases:
– Linear Analysis:
– Hierarchical Analysis:
– Semantic Analysis:

18
Analysis of the Source Program:
• Linear Analysis:
– In which the stream of characters making up the
source program is read from left-to-right and
grouped into tokens that are sequences of
characters having a collective meaning.

19
Scanning or Lexical Analysis (Linear
Analysis):
• In a compiler, linear analysis is called lexical
analysis or scanning.
• For example, in lexical analysis the characters in
the assignment statement
• Position: = initial + rate * 60
• Would be grouped into the following tokens:
20
Scanning or Lexical Analysis (Linear
Analysis):
•
•
•
•
•
•
•

The identifier, position.
The assignment symbol :=
The identifier initial.
The plus sign.
The identifier rate.
The multiplication sign.
The number 60.
21
Scanning or Lexical Analysis (Linear
Analysis):
• The blanks separating the characters of these
tokens would normally be eliminated during
the lexical analysis.

22
23
Analysis of the Source Program:
• Hierarchical Analysis:
– In which characters or tokens are grouped
hierarchically into nested collections with
collective meaning.

24
Syntax Analysis or Hierarchical
Analysis (Parsing):
• Hierarchical analysis is called parsing or syntax
analysis.
• It involves grouping the tokens of the source
program into grammatical phases that are
used by the compiler to synthesize output.

25
Syntax Analysis or Hierarchical
Analysis (Parsing):
• The grammatical phrases of the source
program are represented by a parse tree.

26
Syntax Analysis or Hierarchical
Analysis (Parsing):
Assignment
Statement
:=
Identifier
Position

Expression
+
Expression
Identifier
Initial

Expression
*
Expression
Identifier
Rate

Expression
Number
60

27
Syntax Analysis or Hierarchical
Analysis (Parsing):
• In the expression initial + rate * 60, the phrase
rate * 60 is a logical unit because the usual
conventions of arithmetic expressions tell us
that the multiplication is performed before
addition.
• Because the expression initial + rate is
followed by a *, it is not grouped into a single
phrase by itself
28
Syntax Analysis or Hierarchical
Analysis (Parsing):
• The hierarchical structure of a program is
usually expressed by recursive rules.
• For example, we might have the following
rules, as part of the definition of expression:

29
Syntax Analysis or Hierarchical
Analysis (Parsing):
• Any identifier is an expression.
• Any number is an expression
• If expression1 and expression2 are
expressions, then so are
– Expression1 + expression2
– Expression1 * expression2
– (Expression1 )

30
31
Analysis of the Source Program:
• Semantic Analysis:
– In which certain checks are performed to ensure
that the components of a program fit together
meaningfully.

32
Semantic Analysis:
• The semantic analysis phase checks the source
program for semantic errors and gathers type
information for the subsequent codegeneration phase.

33
Semantic Analysis:
• It uses the hierarchical structure determined
by the syntax-analysis phase to identify the
operators and operand of expressions and
statements.

34
Semantic Analysis:
• An important component of semantic analysis
is type checking.
• Here are the compiler checks that each
operator has operands that are permitted by
the source language specification.

35
Semantic Analysis:
• For example, when a binary arithmetic
operator is applied to an integer and real. In
this case, the compiler may need to be
converting the integer to a real. As shown in
figure given below

36
Semantic Analysis:

37
38
1.3 The Phases of a Compiler:
• A compiler operates in phases.
• Each of which transforms the source program
from one representation to another.
• A typical decomposition of a compiler is
shown in fig given below

39
1.3 The Phases of a Compiler:

40
1.3 The Phases of a Compiler:
• Linear Analysis:
– In which the stream of characters making up the
source program is read from left-to-right and
grouped into tokens that are sequences of
characters having a collective meaning.

41
1.3 The Phases of a Compiler:
• In a compiler, linear analysis is called lexical
analysis or scanning.
• For example, in lexical analysis the characters in
the assignment statement
• Position: = initial + rate * 60
• Would be grouped into the following tokens:
42
1.3 The Phases of a Compiler:
•
•
•
•
•
•
•

The identifier, position.
The assignment symbol :=
The identifier initial.
The plus sign.
The identifier rate.
The multiplication sign.
The number 60.
43
1.3 The Phases of a Compiler:
• The blanks separating the characters of these
tokens would normally be eliminated during
the lexical analysis.

44
1.3 The Phases of a Compiler:
• Hierarchical Analysis:
– In which characters or tokens are grouped
hierarchically into nested collections with
collective meaning.

45
1.3 The Phases of a Compiler:
• Hierarchical analysis is called parsing or syntax
analysis.
• It involves grouping the tokens of the source
program into grammatical phases that are
used by the compiler to synthesize output.

46
1.3 The Phases of a Compiler:
• The grammatical phrases of the source
program are represented by a parse tree.

47
1.3 The Phases of a Compiler:
Assignment
Statement
:=
Identifier
Position

Expression
+
Expression
Identifier
Initial

Expression
*
Expression
Identifier
Rate

Expression
Number
60

48
1.3 The Phases of a Compiler:
• In the expression initial + rate * 60, the phrase
rate * 60 is a logical unit because the usual
conventions of arithmetic expressions tell us
that the multiplication is performed before
addition.
• Because the expression initial + rate is
followed by a *, it is not grouped into a single
phrase by itself
49
1.3 The Phases of a Compiler:
• The hierarchical structure of a program is
usually expressed by recursive rules.
• For example, we might have the following
rules, as part of the definition of expression:

50
1.3 The Phases of a Compiler:
• Any identifier is an expression.
• Any number is an expression
• If expression1 and expression2 are expressions,
then so are
– Expression1 + expression2
– Expression1 * expression2
– (Expression1 )

51
1.3 The Phases of a Compiler:
• Semantic Analysis:
– In which certain checks are performed to ensure
that the components of a program fit together
meaningfully.

52
1.3 The Phases of a Compiler:
• The semantic analysis phase checks the source
program for semantic errors and gathers type
information for the subsequent codegeneration phase.

53
1.3 The Phases of a Compiler:
• It uses the hierarchical structure determined
by the syntax-analysis phase to identify the
operators and operand of expressions and
statements.

54
1.3 The Phases of a Compiler:
• An important component of semantic analysis
is type checking.
• Here are the compiler checks that each
operator has operands that are permitted by
the source language specification.

55
1.3 The Phases of a Compiler:
• For example, when a binary arithmetic
operator is applied to an integer and real. In
this case, the compiler may need to be
converting the integer to a real. As shown in
figure given below

56
1.3 The Phases of a Compiler:

57
1.3 The Phases of a Compiler:
• Symbol Table Management:
– An essential function of a compiler is to record the
identifiers used in the source program and collect
information about various attributes of each
identifier.
– These attributes may provide information about
the storage allocated for an identifier, its type, its
scope.
58
1.3 The Phases of a Compiler:
– The symbol table is a data structure containing a
record for each identifier with fields for the
attributes of the identifier.
– When an identifier in the source program is
detected by the lexical analyzer, the identifier is
entered into the symbol table

59
1.3 The Phases of a Compiler:
– However, the attributes of an identifier cannot
normally be determined during lexical analysis.
– For example, in a Pascal declaration like
– Var position, initial, rate : real;
– The type real is not known when position, initial
and rate are seen by the lexical analyzer.

60
1.3 The Phases of a Compiler:
– The remaining phases gets information about
identifiers into the symbol table and then use this
information in various ways.
– For example, when doing semantic analysis and
intermediate code generation, we need to know
what the types of identifiers are, so we can check
that the source program uses them in valid ways,
and so that we can generate the proper
operations on them.
61
1.3 The Phases of a Compiler:
– The code generator typically enters and uses
detailed information about the storage assigned
to identifiers.

62
63
Error Detection and Reporting:
• Each phase can encounter errors.
• However, after detecting an error, a phase
must somehow deal with that error, so that
compilation can proceed, allowing further
errors in the source program to be detected.

64
Error Detection and Reporting:
• A compiler that stops when it finds the first
error is not as helpful as it could be.
• The syntax and semantic analysis phases
usually handle a large fraction of the errors
detectable by the compiler.

65
Error Detection and Reporting:
• Errors where the token stream violates the
structure rules (syntax) of the language are
determined by the syntax analysis phase.

• The lexical phase can detect errors where the
characters remaining in the input do not form
any token of the language.

66
67
Intermediate Code Generation:
• After Syntax and semantic analysis, some
compilers generate an explicit intermediate
representation of the source program.

• We can think of this intermediate
representation as a program for an abstract
machine.

68
Intermediate Code Generation:
• This intermediate representation should have
two important properties;
– it should be easy to produce,
– easy to translate into the target program.

69
Intermediate Code Generation:
• We consider an intermediate form called
“three-address code,”
• which is like the assembly language for a
machine in which every memory location can
act like a register.

70
Intermediate Code Generation:
• Three-address code consists of a sequence of
instructions, each of which has at most three
operands.

• The source program in (1.1) might appear in
three-address code as

71
Intermediate Code Generation:
(1.3)

•
•
•
•

Temp1
Temp2
Temp3
id1 :=

:= inttoreal (60)
:= id3 * temp1
:= id2 + temp2
temp3

72
73
Code Optimization:
• The code optimization phase attempts to
improve the intermediate code, so that fasterrunning machine code will result.

74
Code Optimization:
• Some optimizations are trivial.
• For example, a natural algorithm generates
the intermediate code (1.3), using an
instruction for each operator in the tree
representation after semantic analysis, even
though there is a better way to perform the
same calculation, using the two instructions.
75
Code Optimization:
(1.4)

• Temp1 := id3 * 60.0
• id := id2 + temp1
• There is nothing wrong with this simple
algorithm, since the problem can be fixed
during the code-optimization phase.

76
Code Optimization:
• That is, the compiler can deduce that the
conversion of 60 from integer to real
representation can be done once and for all at
compile time, so the inttoreal operation can
be eliminated.

77
Code Optimization:
• Besides, temp3 is used only once, to transmit
its value to id1. It then becomes safe to
substitute id1 for temp3, whereupon the last
statement of 1.3 is not needed and the code
of 1.4 results.

78
79
Code Generation
• The final phase of the compiler is the
generation of target code
• consisting normally of relocatable machine
code or assembly code.

80
Code Generation
• Memory locations are selected for each of the
variables used by the program.
• Then, intermediate instructions are each
translated into a sequence of machine
instructions that perform the same task.

• A crucial aspect is the assignment of variables
to registers.
81
Code Generation
• For example, using registers 1 and 2, the
translation of the code of 1.4 might become
•
•
•
•
•

MOVF id3, r2
MULF #60.0, r2
MOVF id2, r1
ADDF r2, r1
MOVF r1, id1
82
Code Generation
• The first and second operands of each
instruction specify a source and destination,
respectively.

• The F in each instruction tells us that
instructions deal with floating-point numbers.

83
Code Generation
• This code moves the contents of the address
id3 into register 2, and then multiplies it with
the real-constant 60.0.

• The # signifies that 60.0 is to be treated as a
constant.

84
Code Generation
• The third instruction moves id2 into register 1
and adds to it the value previously computed
in register 2

• Finally, the value in register 1 is moved into
the address of id1.

85
86
1.4 Cousins of the Compiler:
• As we saw in given figure, the input to a
compiler may be produced by one or more
preprocessors, and further processing of the
compiler’s output may be needed before
running machine code is obtained.

87
Skeletal Source Program
Preprocessor
Source program
Compiler
Target assembly program
Assembler
Relocatable machine code

Loader/link-editor

LIBRARY, RELOCATABLE
OBJECT FILES

Absolute machine code
1.3. A LANGUAGE-PROCESSING SYSTEM

88
1.4 Cousins of the Compiler:
• Preprocessors:
• preprocessors produce input to compilers.
They may perform the following functions:
– Macro Processing:
– File inclusion:
– “Rational” Preprocessors:
– Language extensions:
89
Preprocessors:
• Macro Processing:
– A preprocessor may allow a user to define macros
that are shorthand’s for longer constructs.

90
Preprocessors:
• File inclusion:
– A preprocessor may include header files into the
program text.
– For example, the C preprocessor causes the
contents of the file <global.h> to replace the
statement #include <global.h> when it processes a
file containing this statement.

91
Preprocessors:
defs.h

main.c

#include “defs.h”
//////
//////
//////

…---…---…--…---…---…--…---…---…---

//////
//////
//////
…---…---…--…---…---…--…---…---…---

92
Preprocessors:
• “Rational” Preprocessors:
– These processors augment older languages with
more modern flow-of-control and data-structuring
facilities.

93
Preprocessors:
• Language extensions:
– These processors attempt to add capabilities to
the language by what amounts to built-in macros.
– For example, the language Equal is a database
query language embedded in C. Statements
beginning with ## are taken by the preprocessor
to be database-access statements, unrelated to C,
and are translated into procedure calls on routines
that perform the database access.
94
Assemblers:
• Some compilers produce assembly code that
is passed to an assembler for further
processing.

• Other compilers perform the job of the
assembler, producing relocatable machine
code that can be passed directly to the
loader/link-editor.
95
Assemblers:

• Here we shall review the relationship between
assembly and machine code.

96
Assemblers:
• Assembly code is a mnemonic version of
machine code.
• In which names are used instead of binary
codes for operations, and names are also
given to memory addresses.

97
Assemblers:
• A typical sequence of assembly instructions
might be
• MOV a , R1
• ADD #2 , R1
• MOV R1 , b

98
Assemblers:
• This code moves the contents of the address a
into register 1, then adds the constant 2 to it,
reading the contents of register 1 as a fixedpoint number, and finally stores the result in
the location named by b. thus, it computes
b:=a+2.

99
Two-Pass Compiler:

100
Two-Pass Compiler:
• The simplest form of assembler makes two
passes over the input.

101
Two-Pass Compiler:
• in the first pass, all the identifiers that denote
storage locations are found and stored in a
symbol table

• Identifiers are assigned storage locations as
they are encountered for the first time, so
after reading 1.6, for example, the symbol
table might contain the entries shown in given
below.
102
Two-Pass Compiler:
MOV a , R1
ADD #2 , R1
MOV R1 , b

Identifiers
a
b

Address
0
4

103
Two-Pass Compiler:
• In the second pass, the assembler scans the
input again.
• This time, it translates each operation code
into the sequence of bits representing that
operation in machine language.

• The output of the 2nd pass is usually
relocatable machine code.
104
Loaders and Link-Editors:
• usually, a program called a loader performs
the two functions of loading and link-editing.

105
Loaders and Link-Editors:
• The process of loading consists of taking
relocatable machine code, altering the
relocatable addresses, and placing the altered
instructions and data in memory at the proper
location.

106
Loaders and Link-Editors:
• The link-editor allows us to make a single
program from several files of relocatable
machine code.

107
108
1.5
The Grouping of Phases:

109
Front and Back Ends:
• The phases are collected into a front end and
a back end.
• The front end consists of those phases that
depend primarily on the source language and
are largely independent of the target machine.

110
Front and Back Ends:
• These normally include lexical and syntactic
analysis, the creating of the symbol table,
semantic analysis, and the generation of
intermediate code.
• A certain among of code optimization can be
done by the front end as well.

111
Front and Back Ends:
• The front end also includes the error handling
that goes along with each of these phases.

112
Front and Back Ends:
• The back end includes those portions of the
compiler that depend on the target machine.
• And generally, these portions do not depend
on the source language, depend on just the
intermediate language.

113
Front and Back Ends:
• In the back end, we find aspects of the code
optimization phase, and we find code
generation, along with the necessary error
handling and symbol table operations.

114
115
Passes:

116
117
118
Compiler-Construction Tools:
• The compiler writer, like any programmer, can
profitably use tools such as
– Debuggers,
– Version managers,
– Profilers and so on.

119
Compiler-Construction Tools:
• In addition to these software-development
tools, other more specialized tools have been
developed for helping implement various
phases of a compiler.

120
Compiler-Construction Tools:
• Shortly after the first compilers were written,
systems to help with the compiler-writing
process appeared.
• These systems have often been referred to as
– Compiler-compilers,
– Compiler-generators,
– Or Translator-writing systems.

121
Compiler-Construction Tools:
• Some general tools have been created for the
automatic design of specific compiler
components.
• These tools use specialized languages for
specifying and implementing the component,
and many use algorithms that are quite
sophisticated.

122
Compiler-Construction Tools:
• The most successful tools are those that hide
the details of the generation algorithm and
produce components that can be easily
integrated into the remainder of a compiler.

123
Compiler-Construction Tools:
• The following is a list of some useful compilerconstruction tools:
– Parser generators
– Scanner generators
– Syntax directed translation engines
– Automatic code generators
– Data-flow engines

124
Compiler-Construction Tools:
• Parser generators
– These produce syntax analyzers, normally from
input that is based on a context-free grammar.
– In early compilers, syntax analysis consumed not
only a large fraction of the running time of a
compiler, but a large fraction of the intellectual
effort of writing a compiler.
– This phase is considered one of the easiest to
implement.
125
Compiler-Construction Tools:
• Scanner generators:
– These tools automatically generate lexical
analyzers, normally from a specification based on
regular expressions.
– The basic organization of the resulting lexical
analyzer is in effect a finite automaton.

126
Compiler-Construction Tools:
• Syntax directed translation engines:
– These produce collections of routines that walk
the parse tree, generating intermediate code.
– The basic idea is that one or more “translations”
are associated with each node of the parse tree,
and each translation is defined in terms of
translations at its neighbor nodes in the tree.

127
Compiler-Construction Tools:
• Automatic code generators:
– Such a tool takes a collection of rules that define
the translation of each operation of the
intermediate language into the machine language
for the target machine.

128
• Data-flow engines:
– Much of the information needed to perform good
code optimization involves “data-flow analysis,”
the gathering of information how values are
transmitted from one part of a program to each
other part.

129

Contenu connexe

Tendances

Compiler Construction
Compiler ConstructionCompiler Construction
Compiler ConstructionAhmed Raza
 
phases of compiler-analysis phase
phases of compiler-analysis phasephases of compiler-analysis phase
phases of compiler-analysis phaseSuyash Srivastava
 
Compiler Design Introduction
Compiler Design IntroductionCompiler Design Introduction
Compiler Design IntroductionRicha Sharma
 
Spr ch-05-compilers
Spr ch-05-compilersSpr ch-05-compilers
Spr ch-05-compilersVasim Pathan
 
Passes of compilers
Passes of compilersPasses of compilers
Passes of compilersVairavel C
 
Principles of compiler design
Principles of compiler designPrinciples of compiler design
Principles of compiler designDHARANI BABU
 
what is compiler and five phases of compiler
what is compiler and five phases of compilerwhat is compiler and five phases of compiler
what is compiler and five phases of compileradilmehmood93
 
Principles of compiler design
Principles of compiler designPrinciples of compiler design
Principles of compiler designJanani Parthiban
 
Phases of the Compiler - Systems Programming
Phases of the Compiler - Systems ProgrammingPhases of the Compiler - Systems Programming
Phases of the Compiler - Systems ProgrammingMukesh Tekwani
 

Tendances (20)

Compiler Construction
Compiler ConstructionCompiler Construction
Compiler Construction
 
Plc part 2
Plc  part 2Plc  part 2
Plc part 2
 
Lexical analyzer
Lexical analyzerLexical analyzer
Lexical analyzer
 
phases of compiler-analysis phase
phases of compiler-analysis phasephases of compiler-analysis phase
phases of compiler-analysis phase
 
phases of a compiler
 phases of a compiler phases of a compiler
phases of a compiler
 
Phases of compiler
Phases of compilerPhases of compiler
Phases of compiler
 
Compiler Design Introduction
Compiler Design IntroductionCompiler Design Introduction
Compiler Design Introduction
 
Spr ch-05-compilers
Spr ch-05-compilersSpr ch-05-compilers
Spr ch-05-compilers
 
Lecture1 introduction compilers
Lecture1 introduction compilersLecture1 introduction compilers
Lecture1 introduction compilers
 
Passes of compilers
Passes of compilersPasses of compilers
Passes of compilers
 
Principles of compiler design
Principles of compiler designPrinciples of compiler design
Principles of compiler design
 
Compiler construction
Compiler constructionCompiler construction
Compiler construction
 
Compiler1
Compiler1Compiler1
Compiler1
 
Phases of Compiler
Phases of CompilerPhases of Compiler
Phases of Compiler
 
what is compiler and five phases of compiler
what is compiler and five phases of compilerwhat is compiler and five phases of compiler
what is compiler and five phases of compiler
 
Unit 1 psp
Unit 1 pspUnit 1 psp
Unit 1 psp
 
Compiler design
Compiler designCompiler design
Compiler design
 
Principles of compiler design
Principles of compiler designPrinciples of compiler design
Principles of compiler design
 
Phases of the Compiler - Systems Programming
Phases of the Compiler - Systems ProgrammingPhases of the Compiler - Systems Programming
Phases of the Compiler - Systems Programming
 
Ss ui lecture 2
Ss ui lecture 2Ss ui lecture 2
Ss ui lecture 2
 

En vedette

Assigment # 1 telecommunication system
Assigment # 1 telecommunication systemAssigment # 1 telecommunication system
Assigment # 1 telecommunication systemNadeem Khan
 
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]Energy Digital Summit
 
Learning activity progress- Sarah
Learning activity progress- SarahLearning activity progress- Sarah
Learning activity progress- Sarahsarahmobilelearning
 
Presentation
PresentationPresentation
PresentationH00228079
 
ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016
ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016
ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016Anastasia Petraki
 
2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziende2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziendeGabriele Romanato
 
Curriculum Vitae_Sudhan R with 2Yr`s Experience
Curriculum Vitae_Sudhan R with 2Yr`s ExperienceCurriculum Vitae_Sudhan R with 2Yr`s Experience
Curriculum Vitae_Sudhan R with 2Yr`s ExperienceSUDHAN R
 
αίσιο τέλος, διήγημα
αίσιο τέλος, διήγημααίσιο τέλος, διήγημα
αίσιο τέλος, διήγημαartedinou
 
Open Mic Webcast: "Connections Next - what to expect from the next version "
Open Mic Webcast:  "Connections Next - what to expect from the next version "Open Mic Webcast:  "Connections Next - what to expect from the next version "
Open Mic Webcast: "Connections Next - what to expect from the next version "Vinayak Tavargeri
 
20140813 summer school_indicators
20140813 summer school_indicators20140813 summer school_indicators
20140813 summer school_indicatorsAnja Haider-Wallner
 
Latent Semantic Similarity in Unstructured, Initial Dyadic Interactions
Latent Semantic Similarity in Unstructured, Initial Dyadic InteractionsLatent Semantic Similarity in Unstructured, Initial Dyadic Interactions
Latent Semantic Similarity in Unstructured, Initial Dyadic InteractionsVivian Ta
 
Wee cig presentation
Wee cig presentationWee cig presentation
Wee cig presentationdennislzf
 
RTB для недвижимости и авто
RTB для недвижимости и автоRTB для недвижимости и авто
RTB для недвижимости и автоValentin El'tsov
 

En vedette (20)

Assigment # 1 telecommunication system
Assigment # 1 telecommunication systemAssigment # 1 telecommunication system
Assigment # 1 telecommunication system
 
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
Inspiration from the Future Present - Joel Tarver [Energy Digital Summit 2015]
 
Learning activity progress- Sarah
Learning activity progress- SarahLearning activity progress- Sarah
Learning activity progress- Sarah
 
Md. Shafiquzzman Resume
Md. Shafiquzzman ResumeMd. Shafiquzzman Resume
Md. Shafiquzzman Resume
 
Presentation
PresentationPresentation
Presentation
 
ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016
ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016
ΙΣΤΟΡΙΑ Α' ΕΠΑΛ ΠΡΟΑΓΩΓΙΚΕΣ 2016
 
2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziende2011-2014: cosa è cambiato sul Web per le aziende
2011-2014: cosa è cambiato sul Web per le aziende
 
Portafolio Arq
Portafolio ArqPortafolio Arq
Portafolio Arq
 
Obrazovanje 02
Obrazovanje 02Obrazovanje 02
Obrazovanje 02
 
Curriculum Vitae_Sudhan R with 2Yr`s Experience
Curriculum Vitae_Sudhan R with 2Yr`s ExperienceCurriculum Vitae_Sudhan R with 2Yr`s Experience
Curriculum Vitae_Sudhan R with 2Yr`s Experience
 
αίσιο τέλος, διήγημα
αίσιο τέλος, διήγημααίσιο τέλος, διήγημα
αίσιο τέλος, διήγημα
 
Payout details swa
Payout details swaPayout details swa
Payout details swa
 
Open Mic Webcast: "Connections Next - what to expect from the next version "
Open Mic Webcast:  "Connections Next - what to expect from the next version "Open Mic Webcast:  "Connections Next - what to expect from the next version "
Open Mic Webcast: "Connections Next - what to expect from the next version "
 
Agile Developmet - RAD
Agile Developmet - RADAgile Developmet - RAD
Agile Developmet - RAD
 
20140813 summer school_indicators
20140813 summer school_indicators20140813 summer school_indicators
20140813 summer school_indicators
 
Latent Semantic Similarity in Unstructured, Initial Dyadic Interactions
Latent Semantic Similarity in Unstructured, Initial Dyadic InteractionsLatent Semantic Similarity in Unstructured, Initial Dyadic Interactions
Latent Semantic Similarity in Unstructured, Initial Dyadic Interactions
 
Wee cig presentation
Wee cig presentationWee cig presentation
Wee cig presentation
 
Dung si Monti_Ep 01
Dung si Monti_Ep 01Dung si Monti_Ep 01
Dung si Monti_Ep 01
 
Recce
RecceRecce
Recce
 
RTB для недвижимости и авто
RTB для недвижимости и автоRTB для недвижимости и авто
RTB для недвижимости и авто
 

Similaire à Comiler construction Notes

Chapter-1.pptx compiler Design Course Material
Chapter-1.pptx compiler Design Course MaterialChapter-1.pptx compiler Design Course Material
Chapter-1.pptx compiler Design Course MaterialgadisaAdamu
 
System software module 4 presentation file
System software module 4 presentation fileSystem software module 4 presentation file
System software module 4 presentation filejithujithin657
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler ConstructionSarmad Ali
 
COMPILER CONSTRUCTION KU 1.pptx
COMPILER CONSTRUCTION KU 1.pptxCOMPILER CONSTRUCTION KU 1.pptx
COMPILER CONSTRUCTION KU 1.pptxRossy719186
 
1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.ppt1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.pptRakesh Kumar
 
Compier Design_Unit I.ppt
Compier Design_Unit I.pptCompier Design_Unit I.ppt
Compier Design_Unit I.pptsivaganesh293
 
Compier Design_Unit I.ppt
Compier Design_Unit I.pptCompier Design_Unit I.ppt
Compier Design_Unit I.pptsivaganesh293
 
Principles of Compiler Design
Principles of Compiler DesignPrinciples of Compiler Design
Principles of Compiler DesignMarimuthu M
 
Compiler an overview
Compiler  an overviewCompiler  an overview
Compiler an overviewamudha arul
 
Compier Design_Unit I_SRM.ppt
Compier Design_Unit I_SRM.pptCompier Design_Unit I_SRM.ppt
Compier Design_Unit I_SRM.pptApoorv Diwan
 
Introduction to Compilers
Introduction to CompilersIntroduction to Compilers
Introduction to Compilersvijaya603274
 
Compiler Design
Compiler DesignCompiler Design
Compiler DesignMir Majid
 

Similaire à Comiler construction Notes (20)

Unit 1.pptx
Unit 1.pptxUnit 1.pptx
Unit 1.pptx
 
Chapter-1.pptx compiler Design Course Material
Chapter-1.pptx compiler Design Course MaterialChapter-1.pptx compiler Design Course Material
Chapter-1.pptx compiler Design Course Material
 
System software module 4 presentation file
System software module 4 presentation fileSystem software module 4 presentation file
System software module 4 presentation file
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler Construction
 
Compiler unit 1
Compiler unit 1Compiler unit 1
Compiler unit 1
 
Chapter 1.pptx
Chapter 1.pptxChapter 1.pptx
Chapter 1.pptx
 
1._Introduction_.pptx
1._Introduction_.pptx1._Introduction_.pptx
1._Introduction_.pptx
 
COMPILER CONSTRUCTION KU 1.pptx
COMPILER CONSTRUCTION KU 1.pptxCOMPILER CONSTRUCTION KU 1.pptx
COMPILER CONSTRUCTION KU 1.pptx
 
1 compiler outline
1 compiler outline1 compiler outline
1 compiler outline
 
1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.ppt1 - Introduction to Compilers.ppt
1 - Introduction to Compilers.ppt
 
Compier Design_Unit I.ppt
Compier Design_Unit I.pptCompier Design_Unit I.ppt
Compier Design_Unit I.ppt
 
Compier Design_Unit I.ppt
Compier Design_Unit I.pptCompier Design_Unit I.ppt
Compier Design_Unit I.ppt
 
Compiler lecture 04
Compiler lecture 04Compiler lecture 04
Compiler lecture 04
 
Compiler lecture 04
Compiler lecture 04Compiler lecture 04
Compiler lecture 04
 
Principles of Compiler Design
Principles of Compiler DesignPrinciples of Compiler Design
Principles of Compiler Design
 
CD U1-5.pptx
CD U1-5.pptxCD U1-5.pptx
CD U1-5.pptx
 
Compiler an overview
Compiler  an overviewCompiler  an overview
Compiler an overview
 
Compier Design_Unit I_SRM.ppt
Compier Design_Unit I_SRM.pptCompier Design_Unit I_SRM.ppt
Compier Design_Unit I_SRM.ppt
 
Introduction to Compilers
Introduction to CompilersIntroduction to Compilers
Introduction to Compilers
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 

Dernier

Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)cama23
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPCeline George
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 

Dernier (20)

Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)Global Lehigh Strategic Initiatives (without descriptions)
Global Lehigh Strategic Initiatives (without descriptions)
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
What is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERPWhat is Model Inheritance in Odoo 17 ERP
What is Model Inheritance in Odoo 17 ERP
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 

Comiler construction Notes

  • 1. 1.1 Compilers: • A compiler is a program that reads a program written in one language –– the source language –– and translates it into an equivalent program in another language –– the target language 1
  • 2. 1.1 Compilers: • As an important part of this translation process, the compiler reports to its user the presence of errors in the source program. 2
  • 4. 1.1 Compilers: • At first glance, the variety of compilers may appear overwhelming. • There are thousands of source languages, ranging from traditional programming languages such as FORTRAN and Pascal to specialized languages. 4
  • 5. 1.1 Compilers: • Target languages are equally as varied; • A target language may be another programming language, or the machine language of any computer. 5
  • 6. 1.1 Compilers: • Compilers are sometimes classified as: – single-pass – multi-pass – load-and-go – Debugging – optimizing 6
  • 7. 1.1 Compilers: • The basic tasks that any compiler must perform are essentially the same. • By understanding these tasks, we can construct compilers for a wide variety of source languages and target machines using the same basic techniques. 7
  • 8. 1.1 Compilers: • Throughout the 1950’s, compilers were considered notoriously difficult programs to write. • The first FORTRAN compiler, for example, took 18 staff-years to implement. 8
  • 9. 9
  • 10. The Analysis-Synthesis Model of Compilation: • There are two parts of compilation: – Analysis – Synthesis 10
  • 11. The Analysis-Synthesis Model of Compilation: • The analysis part breaks up the source program into constituent pieces • creates an intermediate representation of the source program. 11
  • 12. The Analysis-Synthesis Model of Compilation: • The synthesis part constructs the desired target program from the intermediate representation. 12
  • 13. The Analysis-Synthesis Model of Compilation: source code Front End IR Back End machine code errors 13
  • 14. The Analysis-Synthesis Model of Compilation: • During analysis, the operations implied by the source program are determined and recorded in a hierarchical structure called a tree. • Often, a special kind of tree called a syntax tree is used. 14
  • 15. The Analysis-Synthesis Model of Compilation: • In syntax tree each node represents an operation and the children of the node represent the arguments of the operation. • For example, a syntax tree of an assignment statement is shown below. 15
  • 16. The Analysis-Synthesis Model of Compilation: 16
  • 17. 17
  • 18. Analysis of the Source Program: • In compiling, analysis consists of three phases: – Linear Analysis: – Hierarchical Analysis: – Semantic Analysis: 18
  • 19. Analysis of the Source Program: • Linear Analysis: – In which the stream of characters making up the source program is read from left-to-right and grouped into tokens that are sequences of characters having a collective meaning. 19
  • 20. Scanning or Lexical Analysis (Linear Analysis): • In a compiler, linear analysis is called lexical analysis or scanning. • For example, in lexical analysis the characters in the assignment statement • Position: = initial + rate * 60 • Would be grouped into the following tokens: 20
  • 21. Scanning or Lexical Analysis (Linear Analysis): • • • • • • • The identifier, position. The assignment symbol := The identifier initial. The plus sign. The identifier rate. The multiplication sign. The number 60. 21
  • 22. Scanning or Lexical Analysis (Linear Analysis): • The blanks separating the characters of these tokens would normally be eliminated during the lexical analysis. 22
  • 23. 23
  • 24. Analysis of the Source Program: • Hierarchical Analysis: – In which characters or tokens are grouped hierarchically into nested collections with collective meaning. 24
  • 25. Syntax Analysis or Hierarchical Analysis (Parsing): • Hierarchical analysis is called parsing or syntax analysis. • It involves grouping the tokens of the source program into grammatical phases that are used by the compiler to synthesize output. 25
  • 26. Syntax Analysis or Hierarchical Analysis (Parsing): • The grammatical phrases of the source program are represented by a parse tree. 26
  • 27. Syntax Analysis or Hierarchical Analysis (Parsing): Assignment Statement := Identifier Position Expression + Expression Identifier Initial Expression * Expression Identifier Rate Expression Number 60 27
  • 28. Syntax Analysis or Hierarchical Analysis (Parsing): • In the expression initial + rate * 60, the phrase rate * 60 is a logical unit because the usual conventions of arithmetic expressions tell us that the multiplication is performed before addition. • Because the expression initial + rate is followed by a *, it is not grouped into a single phrase by itself 28
  • 29. Syntax Analysis or Hierarchical Analysis (Parsing): • The hierarchical structure of a program is usually expressed by recursive rules. • For example, we might have the following rules, as part of the definition of expression: 29
  • 30. Syntax Analysis or Hierarchical Analysis (Parsing): • Any identifier is an expression. • Any number is an expression • If expression1 and expression2 are expressions, then so are – Expression1 + expression2 – Expression1 * expression2 – (Expression1 ) 30
  • 31. 31
  • 32. Analysis of the Source Program: • Semantic Analysis: – In which certain checks are performed to ensure that the components of a program fit together meaningfully. 32
  • 33. Semantic Analysis: • The semantic analysis phase checks the source program for semantic errors and gathers type information for the subsequent codegeneration phase. 33
  • 34. Semantic Analysis: • It uses the hierarchical structure determined by the syntax-analysis phase to identify the operators and operand of expressions and statements. 34
  • 35. Semantic Analysis: • An important component of semantic analysis is type checking. • Here are the compiler checks that each operator has operands that are permitted by the source language specification. 35
  • 36. Semantic Analysis: • For example, when a binary arithmetic operator is applied to an integer and real. In this case, the compiler may need to be converting the integer to a real. As shown in figure given below 36
  • 38. 38
  • 39. 1.3 The Phases of a Compiler: • A compiler operates in phases. • Each of which transforms the source program from one representation to another. • A typical decomposition of a compiler is shown in fig given below 39
  • 40. 1.3 The Phases of a Compiler: 40
  • 41. 1.3 The Phases of a Compiler: • Linear Analysis: – In which the stream of characters making up the source program is read from left-to-right and grouped into tokens that are sequences of characters having a collective meaning. 41
  • 42. 1.3 The Phases of a Compiler: • In a compiler, linear analysis is called lexical analysis or scanning. • For example, in lexical analysis the characters in the assignment statement • Position: = initial + rate * 60 • Would be grouped into the following tokens: 42
  • 43. 1.3 The Phases of a Compiler: • • • • • • • The identifier, position. The assignment symbol := The identifier initial. The plus sign. The identifier rate. The multiplication sign. The number 60. 43
  • 44. 1.3 The Phases of a Compiler: • The blanks separating the characters of these tokens would normally be eliminated during the lexical analysis. 44
  • 45. 1.3 The Phases of a Compiler: • Hierarchical Analysis: – In which characters or tokens are grouped hierarchically into nested collections with collective meaning. 45
  • 46. 1.3 The Phases of a Compiler: • Hierarchical analysis is called parsing or syntax analysis. • It involves grouping the tokens of the source program into grammatical phases that are used by the compiler to synthesize output. 46
  • 47. 1.3 The Phases of a Compiler: • The grammatical phrases of the source program are represented by a parse tree. 47
  • 48. 1.3 The Phases of a Compiler: Assignment Statement := Identifier Position Expression + Expression Identifier Initial Expression * Expression Identifier Rate Expression Number 60 48
  • 49. 1.3 The Phases of a Compiler: • In the expression initial + rate * 60, the phrase rate * 60 is a logical unit because the usual conventions of arithmetic expressions tell us that the multiplication is performed before addition. • Because the expression initial + rate is followed by a *, it is not grouped into a single phrase by itself 49
  • 50. 1.3 The Phases of a Compiler: • The hierarchical structure of a program is usually expressed by recursive rules. • For example, we might have the following rules, as part of the definition of expression: 50
  • 51. 1.3 The Phases of a Compiler: • Any identifier is an expression. • Any number is an expression • If expression1 and expression2 are expressions, then so are – Expression1 + expression2 – Expression1 * expression2 – (Expression1 ) 51
  • 52. 1.3 The Phases of a Compiler: • Semantic Analysis: – In which certain checks are performed to ensure that the components of a program fit together meaningfully. 52
  • 53. 1.3 The Phases of a Compiler: • The semantic analysis phase checks the source program for semantic errors and gathers type information for the subsequent codegeneration phase. 53
  • 54. 1.3 The Phases of a Compiler: • It uses the hierarchical structure determined by the syntax-analysis phase to identify the operators and operand of expressions and statements. 54
  • 55. 1.3 The Phases of a Compiler: • An important component of semantic analysis is type checking. • Here are the compiler checks that each operator has operands that are permitted by the source language specification. 55
  • 56. 1.3 The Phases of a Compiler: • For example, when a binary arithmetic operator is applied to an integer and real. In this case, the compiler may need to be converting the integer to a real. As shown in figure given below 56
  • 57. 1.3 The Phases of a Compiler: 57
  • 58. 1.3 The Phases of a Compiler: • Symbol Table Management: – An essential function of a compiler is to record the identifiers used in the source program and collect information about various attributes of each identifier. – These attributes may provide information about the storage allocated for an identifier, its type, its scope. 58
  • 59. 1.3 The Phases of a Compiler: – The symbol table is a data structure containing a record for each identifier with fields for the attributes of the identifier. – When an identifier in the source program is detected by the lexical analyzer, the identifier is entered into the symbol table 59
  • 60. 1.3 The Phases of a Compiler: – However, the attributes of an identifier cannot normally be determined during lexical analysis. – For example, in a Pascal declaration like – Var position, initial, rate : real; – The type real is not known when position, initial and rate are seen by the lexical analyzer. 60
  • 61. 1.3 The Phases of a Compiler: – The remaining phases gets information about identifiers into the symbol table and then use this information in various ways. – For example, when doing semantic analysis and intermediate code generation, we need to know what the types of identifiers are, so we can check that the source program uses them in valid ways, and so that we can generate the proper operations on them. 61
  • 62. 1.3 The Phases of a Compiler: – The code generator typically enters and uses detailed information about the storage assigned to identifiers. 62
  • 63. 63
  • 64. Error Detection and Reporting: • Each phase can encounter errors. • However, after detecting an error, a phase must somehow deal with that error, so that compilation can proceed, allowing further errors in the source program to be detected. 64
  • 65. Error Detection and Reporting: • A compiler that stops when it finds the first error is not as helpful as it could be. • The syntax and semantic analysis phases usually handle a large fraction of the errors detectable by the compiler. 65
  • 66. Error Detection and Reporting: • Errors where the token stream violates the structure rules (syntax) of the language are determined by the syntax analysis phase. • The lexical phase can detect errors where the characters remaining in the input do not form any token of the language. 66
  • 67. 67
  • 68. Intermediate Code Generation: • After Syntax and semantic analysis, some compilers generate an explicit intermediate representation of the source program. • We can think of this intermediate representation as a program for an abstract machine. 68
  • 69. Intermediate Code Generation: • This intermediate representation should have two important properties; – it should be easy to produce, – easy to translate into the target program. 69
  • 70. Intermediate Code Generation: • We consider an intermediate form called “three-address code,” • which is like the assembly language for a machine in which every memory location can act like a register. 70
  • 71. Intermediate Code Generation: • Three-address code consists of a sequence of instructions, each of which has at most three operands. • The source program in (1.1) might appear in three-address code as 71
  • 72. Intermediate Code Generation: (1.3) • • • • Temp1 Temp2 Temp3 id1 := := inttoreal (60) := id3 * temp1 := id2 + temp2 temp3 72
  • 73. 73
  • 74. Code Optimization: • The code optimization phase attempts to improve the intermediate code, so that fasterrunning machine code will result. 74
  • 75. Code Optimization: • Some optimizations are trivial. • For example, a natural algorithm generates the intermediate code (1.3), using an instruction for each operator in the tree representation after semantic analysis, even though there is a better way to perform the same calculation, using the two instructions. 75
  • 76. Code Optimization: (1.4) • Temp1 := id3 * 60.0 • id := id2 + temp1 • There is nothing wrong with this simple algorithm, since the problem can be fixed during the code-optimization phase. 76
  • 77. Code Optimization: • That is, the compiler can deduce that the conversion of 60 from integer to real representation can be done once and for all at compile time, so the inttoreal operation can be eliminated. 77
  • 78. Code Optimization: • Besides, temp3 is used only once, to transmit its value to id1. It then becomes safe to substitute id1 for temp3, whereupon the last statement of 1.3 is not needed and the code of 1.4 results. 78
  • 79. 79
  • 80. Code Generation • The final phase of the compiler is the generation of target code • consisting normally of relocatable machine code or assembly code. 80
  • 81. Code Generation • Memory locations are selected for each of the variables used by the program. • Then, intermediate instructions are each translated into a sequence of machine instructions that perform the same task. • A crucial aspect is the assignment of variables to registers. 81
  • 82. Code Generation • For example, using registers 1 and 2, the translation of the code of 1.4 might become • • • • • MOVF id3, r2 MULF #60.0, r2 MOVF id2, r1 ADDF r2, r1 MOVF r1, id1 82
  • 83. Code Generation • The first and second operands of each instruction specify a source and destination, respectively. • The F in each instruction tells us that instructions deal with floating-point numbers. 83
  • 84. Code Generation • This code moves the contents of the address id3 into register 2, and then multiplies it with the real-constant 60.0. • The # signifies that 60.0 is to be treated as a constant. 84
  • 85. Code Generation • The third instruction moves id2 into register 1 and adds to it the value previously computed in register 2 • Finally, the value in register 1 is moved into the address of id1. 85
  • 86. 86
  • 87. 1.4 Cousins of the Compiler: • As we saw in given figure, the input to a compiler may be produced by one or more preprocessors, and further processing of the compiler’s output may be needed before running machine code is obtained. 87
  • 88. Skeletal Source Program Preprocessor Source program Compiler Target assembly program Assembler Relocatable machine code Loader/link-editor LIBRARY, RELOCATABLE OBJECT FILES Absolute machine code 1.3. A LANGUAGE-PROCESSING SYSTEM 88
  • 89. 1.4 Cousins of the Compiler: • Preprocessors: • preprocessors produce input to compilers. They may perform the following functions: – Macro Processing: – File inclusion: – “Rational” Preprocessors: – Language extensions: 89
  • 90. Preprocessors: • Macro Processing: – A preprocessor may allow a user to define macros that are shorthand’s for longer constructs. 90
  • 91. Preprocessors: • File inclusion: – A preprocessor may include header files into the program text. – For example, the C preprocessor causes the contents of the file <global.h> to replace the statement #include <global.h> when it processes a file containing this statement. 91
  • 93. Preprocessors: • “Rational” Preprocessors: – These processors augment older languages with more modern flow-of-control and data-structuring facilities. 93
  • 94. Preprocessors: • Language extensions: – These processors attempt to add capabilities to the language by what amounts to built-in macros. – For example, the language Equal is a database query language embedded in C. Statements beginning with ## are taken by the preprocessor to be database-access statements, unrelated to C, and are translated into procedure calls on routines that perform the database access. 94
  • 95. Assemblers: • Some compilers produce assembly code that is passed to an assembler for further processing. • Other compilers perform the job of the assembler, producing relocatable machine code that can be passed directly to the loader/link-editor. 95
  • 96. Assemblers: • Here we shall review the relationship between assembly and machine code. 96
  • 97. Assemblers: • Assembly code is a mnemonic version of machine code. • In which names are used instead of binary codes for operations, and names are also given to memory addresses. 97
  • 98. Assemblers: • A typical sequence of assembly instructions might be • MOV a , R1 • ADD #2 , R1 • MOV R1 , b 98
  • 99. Assemblers: • This code moves the contents of the address a into register 1, then adds the constant 2 to it, reading the contents of register 1 as a fixedpoint number, and finally stores the result in the location named by b. thus, it computes b:=a+2. 99
  • 101. Two-Pass Compiler: • The simplest form of assembler makes two passes over the input. 101
  • 102. Two-Pass Compiler: • in the first pass, all the identifiers that denote storage locations are found and stored in a symbol table • Identifiers are assigned storage locations as they are encountered for the first time, so after reading 1.6, for example, the symbol table might contain the entries shown in given below. 102
  • 103. Two-Pass Compiler: MOV a , R1 ADD #2 , R1 MOV R1 , b Identifiers a b Address 0 4 103
  • 104. Two-Pass Compiler: • In the second pass, the assembler scans the input again. • This time, it translates each operation code into the sequence of bits representing that operation in machine language. • The output of the 2nd pass is usually relocatable machine code. 104
  • 105. Loaders and Link-Editors: • usually, a program called a loader performs the two functions of loading and link-editing. 105
  • 106. Loaders and Link-Editors: • The process of loading consists of taking relocatable machine code, altering the relocatable addresses, and placing the altered instructions and data in memory at the proper location. 106
  • 107. Loaders and Link-Editors: • The link-editor allows us to make a single program from several files of relocatable machine code. 107
  • 108. 108
  • 109. 1.5 The Grouping of Phases: 109
  • 110. Front and Back Ends: • The phases are collected into a front end and a back end. • The front end consists of those phases that depend primarily on the source language and are largely independent of the target machine. 110
  • 111. Front and Back Ends: • These normally include lexical and syntactic analysis, the creating of the symbol table, semantic analysis, and the generation of intermediate code. • A certain among of code optimization can be done by the front end as well. 111
  • 112. Front and Back Ends: • The front end also includes the error handling that goes along with each of these phases. 112
  • 113. Front and Back Ends: • The back end includes those portions of the compiler that depend on the target machine. • And generally, these portions do not depend on the source language, depend on just the intermediate language. 113
  • 114. Front and Back Ends: • In the back end, we find aspects of the code optimization phase, and we find code generation, along with the necessary error handling and symbol table operations. 114
  • 115. 115
  • 117. 117
  • 118. 118
  • 119. Compiler-Construction Tools: • The compiler writer, like any programmer, can profitably use tools such as – Debuggers, – Version managers, – Profilers and so on. 119
  • 120. Compiler-Construction Tools: • In addition to these software-development tools, other more specialized tools have been developed for helping implement various phases of a compiler. 120
  • 121. Compiler-Construction Tools: • Shortly after the first compilers were written, systems to help with the compiler-writing process appeared. • These systems have often been referred to as – Compiler-compilers, – Compiler-generators, – Or Translator-writing systems. 121
  • 122. Compiler-Construction Tools: • Some general tools have been created for the automatic design of specific compiler components. • These tools use specialized languages for specifying and implementing the component, and many use algorithms that are quite sophisticated. 122
  • 123. Compiler-Construction Tools: • The most successful tools are those that hide the details of the generation algorithm and produce components that can be easily integrated into the remainder of a compiler. 123
  • 124. Compiler-Construction Tools: • The following is a list of some useful compilerconstruction tools: – Parser generators – Scanner generators – Syntax directed translation engines – Automatic code generators – Data-flow engines 124
  • 125. Compiler-Construction Tools: • Parser generators – These produce syntax analyzers, normally from input that is based on a context-free grammar. – In early compilers, syntax analysis consumed not only a large fraction of the running time of a compiler, but a large fraction of the intellectual effort of writing a compiler. – This phase is considered one of the easiest to implement. 125
  • 126. Compiler-Construction Tools: • Scanner generators: – These tools automatically generate lexical analyzers, normally from a specification based on regular expressions. – The basic organization of the resulting lexical analyzer is in effect a finite automaton. 126
  • 127. Compiler-Construction Tools: • Syntax directed translation engines: – These produce collections of routines that walk the parse tree, generating intermediate code. – The basic idea is that one or more “translations” are associated with each node of the parse tree, and each translation is defined in terms of translations at its neighbor nodes in the tree. 127
  • 128. Compiler-Construction Tools: • Automatic code generators: – Such a tool takes a collection of rules that define the translation of each operation of the intermediate language into the machine language for the target machine. 128
  • 129. • Data-flow engines: – Much of the information needed to perform good code optimization involves “data-flow analysis,” the gathering of information how values are transmitted from one part of a program to each other part. 129