Compiler design Notes, IIT Delhi
-
Upload
prasad-sachidananda -
Category
Documents
-
view
131 -
download
9
description
Transcript of Compiler design Notes, IIT Delhi
![Page 1: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/1.jpg)
Home Page
Title Page
JJ II
J I
Page 1 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CS432F/CSL 728:Compiler Design
July 2004
Department of Computer Science and EngineeringI. I. T. Delhi, Hauz Khas, New Delhi 110 016.
July 30, 2004
![Page 2: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/2.jpg)
Home Page
Title Page
JJ II
J I
Page 2 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Contents• first The Bigpicture last
• first Lexical Analysis last
• first Syntax Analysis last
– first Context-free Grammars last
– first Ambiguity last
– first Shift-Reduce Parsing last
– first Parse Trees last
• first Semantic Analysis last
• first Synthesized Attributes last
• first Inherited Attributes last
Contd . . .
![Page 3: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/3.jpg)
Home Page
Title Page
JJ II
J I
Page 3 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Contents. . . Contd
• first Abstract Syntax Trees last
• first Symbol Tables last
• first Intermediate Representation last
– IR: Properties
– Typical Instruction Set
– IR: Generation
• first Runtime Structure last
![Page 4: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/4.jpg)
Home Page
Title Page
JJ II
J I
Page 4 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
![Page 5: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/5.jpg)
Home Page
Title Page
JJ II
J I
Page 5 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 1
SCANNER
stream ofcharacters
stream oftokens
![Page 6: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/6.jpg)
Home Page
Title Page
JJ II
J I
Page 6 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 2
SCANNER
PARSER
stream ofcharacters
stream oftokens
parse tree
![Page 7: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/7.jpg)
Home Page
Title Page
JJ II
J I
Page 7 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 3
SCANNER
PARSER
SEMANTIC ANALYZER
stream ofcharacters
stream oftokens
parse tree
abstractsyntax tree
![Page 8: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/8.jpg)
Home Page
Title Page
JJ II
J I
Page 8 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 4
SCANNER
PARSER
SEMANTIC ANALYZER
I.R. CODE GENERATOR
stream ofcharacters
stream oftokens
parse tree
intermediaterepresentation
abstractsyntax tree
![Page 9: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/9.jpg)
Home Page
Title Page
JJ II
J I
Page 9 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 5
SCANNER
PARSER
SEMANTIC ANALYZER
I.R. CODE GENERATOR
OPTIMIZER
stream ofcharacters
stream oftokens
parse tree
intermediaterepresentation
optimizedintermediaterepresentation
abstractsyntax tree
![Page 10: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/10.jpg)
Home Page
Title Page
JJ II
J I
Page 10 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 6
SCANNER
PARSER
SEMANTIC ANALYZER
I.R. CODE GENERATOR
OPTIMIZER
CODE GENERATOR
stream ofcharacters
stream oftokens
parse tree
intermediaterepresentation
optimizedintermediaterepresentation
target code
abstractsyntax tree
![Page 11: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/11.jpg)
Home Page
Title Page
JJ II
J I
Page 11 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 7
SCANNER
PARSER
SEMANTIC ANALYZER
I.R. CODE GENERATOR
OPTIMIZER
CODE GENERATOR
ERROR−
HANDLER
SYMBOL
TABLE
MANAGER
stream ofcharacters
stream oftokens
parse tree
intermediaterepresentation
optimizedintermediaterepresentation
target code
abstractsyntax tree
![Page 12: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/12.jpg)
Home Page
Title Page
JJ II
J I
Page 12 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
The Big Picture: 7
SCANNER
PARSER
SEMANTIC ANALYZER
I.R. CODE GENERATOR
OPTIMIZER
CODE GENERATOR
ERROR−
HANDLER
SYMBOL
TABLE
MANAGER
stream ofcharacters
stream oftokens
parse tree
intermediaterepresentation
optimizedintermediaterepresentation
target code
abstractsyntax tree
Scanner Parser Semantic AnalysisSymbol TableIR Optimization Contents
![Page 13: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/13.jpg)
Home Page
Title Page
JJ II
J I
Page 13 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
![Page 14: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/14.jpg)
Home Page
Title Page
JJ II
J I
Page 14 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Scanning: 1
• Takes a stream of characters and identifies tokens fromthe lexemes.
• Eliminates comments and redundant whitepace.
• Keeps track of line numbers and column numbers andpasses them as parameters to the other phases to en-able error-reporting to the user.
![Page 15: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/15.jpg)
Home Page
Title Page
JJ II
J I
Page 15 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Scanning: 2• Whitespace: A sequence of space, tab, newline,
carriage-return, form-feed characters etc.
• Lexeme: A sequence of non-whitespace characters de-limited by whitespace or special characters (e.g. oper-ators like +, -, *).
• Examples of lexemes.
– reserved words, keywords, identifiers etc.
– Each comment is usually a single lexeme
– preprocessor directives
![Page 16: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/16.jpg)
Home Page
Title Page
JJ II
J I
Page 16 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Scanning: 3• Token: A sequence of characters to be treated as a
single unit.
• Examples of tokens.
– Reserved words (e.g. begin, end, struct, if etc.)
– Keywords (integer, true etc.)
– Operators (+, &&, ++ etc)
– Identifiers (variable names, procedure names, pa-rameter names)
– Literal constants (numeric, string, character con-stants etc.)
– Punctuation marks (:, , etc.)
![Page 17: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/17.jpg)
Home Page
Title Page
JJ II
J I
Page 17 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Scanning: 4• Identification of tokens is usually done by a Determinis-
tic Finite-state automaton (DFA).
• The set of tokens of a language is represented by alarge regular expression.
• This regular expression is fed to a lexical-analyser gen-erator such as Lex, Flex or ML-Lex.
• A giant DFA is created by the Lexical analyser genera-tor.
![Page 18: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/18.jpg)
Home Page
Title Page
JJ II
J I
Page 18 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Scanning: 5
1
2 3 4
5 6
7 8
913
i
f
a−h,j−
z
a−e,g−z
0−9,a−z 0−9,a−z
0−9
0−9
0−9
0−9 0−9
(
* 10 11 12
14
*
if identifier
real
real
error comment
whitespace
error
int
identifierot
her
char
s
any char
)
The Big Picture
![Page 19: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/19.jpg)
Home Page
Title Page
JJ II
J I
Page 19 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Syntax AnalysisConsider the following two languages over an alphabetA = {a, b}.
R = {anbn|n < 100}P = {anbn|n > 0}
• R may be finitely represented by a regular expression(even though the actual expression is very long).
• However, P cannot actually be represented by a regularexpression
• A regular expression is not powerful enough to repre-sent languages which require parenthesis matching toarbitrary depths.
• All high level programming languages require an under-lying language of expressions which require parenthe-ses to be nested and matched to arbitrary depth.
![Page 20: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/20.jpg)
Home Page
Title Page
JJ II
J I
Page 20 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CF-Grammars:Definition
A context-free grammar (CFG) G = 〈N, T , P, S〉 consistsof
• a set N of nonterminal symbols,
• a set T of terminal symbols or the alphabet,
• a set P of productions or rewrite rules,
• each production is of the form X −→ α, where
– X ∈ N is a nonterminal and
– α ∈ (N ∪ T )∗ is a string of terminals and nontermi-nals
• a start symbol S ∈ N .
![Page 21: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/21.jpg)
Home Page
Title Page
JJ II
J I
Page 21 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CFG: ExampleG = 〈{S}, {a, b}, P, S〉, where S −→ ab and S −→ aSbare the only productions in P .Derivations look like this:
S ⇒ ab
S ⇒ aSb ⇒ aabb
S ⇒ aSb ⇒ aaSbb ⇒ aaabbb
L(G), the languagegenerated by G is {anbn|n > 0}.
Actually can be proved by induction on the length and struc-ture of derivations.
![Page 22: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/22.jpg)
Home Page
Title Page
JJ II
J I
Page 22 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CFG: Empty wordG = 〈{S}, {a, b}, P, S〉, where S −→ SS | aSb | εgenerates all sequences of matching nested parentheses,including the empty word ε.
A leftmost derivation might look like this:
S ⇒ SS ⇒ SSS ⇒ SS ⇒ aSbS ⇒ abS ⇒ abaSb . . .
A rightmost derivation might look like this:
S ⇒ SS ⇒ SSS ⇒ SS ⇒ SaSb ⇒ Sab ⇒ aSbab . . .
Other derivations might look like God alone knows what!
S ⇒ SS ⇒ SSS ⇒ SS ⇒ . . .
Could be quite confusing!
![Page 23: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/23.jpg)
Home Page
Title Page
JJ II
J I
Page 23 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CFG: Derivation trees1
Derivation sequences
• put an artificial order in which productions are fired.
• instead look at treesof derivations in which we may thinkof productions as being fired in parallel.
• There is then no highlighting in red to determine whichcopy of a nonterminal was used to get the next memberof the sequence.
• Of course, generation of the empty word ε must beshown explicitly in the tree.
![Page 24: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/24.jpg)
Home Page
Title Page
JJ II
J I
Page 24 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CFG: Derivation trees2
S
S
S
S
S S
S
S
a b a b
a bε
ε
ε
Derivation tree of
abaabb
ε
![Page 25: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/25.jpg)
Home Page
Title Page
JJ II
J I
Page 25 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CFG: Derivation trees3
S
S
S
S
S
S
S
a b
a b
ε
ε
S
a b
εAnother
Derivation tree of
abaabb
![Page 26: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/26.jpg)
Home Page
Title Page
JJ II
J I
Page 26 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
CFG: Derivation trees4
S
S
S
S
S
S
a b
a b
ε
Sa b
ε
S
ε
Yet another
Derivation tree ofabaabb
![Page 27: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/27.jpg)
Home Page
Title Page
JJ II
J I
Page 27 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
![Page 28: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/28.jpg)
Home Page
Title Page
JJ II
J I
Page 28 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Ambiguity: 1E → I | C | E+E | E∗EI → y | zC → 4
Consider the sentence y + 4 ∗ z.
EE
![Page 29: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/29.jpg)
Home Page
Title Page
JJ II
J I
Page 29 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Ambiguity: 2E → I | C | E+E | E∗EI → y | zC → 4
Consider the sentence y + 4 ∗ z.
E
E E*
E
EE +
![Page 30: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/30.jpg)
Home Page
Title Page
JJ II
J I
Page 30 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Ambiguity: 3E → I | C | E+E | E∗EI → y | zC → 4
Consider the sentence y + 4 ∗ z.
E
E
E
E*
E+
I
E
E
E
E +
EI
*
![Page 31: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/31.jpg)
Home Page
Title Page
JJ II
J I
Page 31 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Ambiguity: 4E → I | C | E+E | E∗EI → y | zC → 4
Consider the sentence y + 4 ∗ z.
E
E
E
E*
E+
I C
I
z
E
E
E
E +
E
C
I
y
I
*
![Page 32: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/32.jpg)
Home Page
Title Page
JJ II
J I
Page 32 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Ambiguity: 5E → I | C | E+E | E∗EI → y | zC → 4
Consider the sentence y + 4 ∗ z.
E
E
E
E*
E+
I
y
C
4
I
z
E
E
E
E +
E
C
I
y
4
I
z
*
![Page 33: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/33.jpg)
Home Page
Title Page
JJ II
J I
Page 33 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
![Page 34: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/34.jpg)
Home Page
Title Page
JJ II
J I
Page 34 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 0−
/
b ( )
a −
a
a / b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
![Page 35: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/35.jpg)
Home Page
Title Page
JJ II
J I
Page 35 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 1−
/
b ( )a
− a / b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
Shifta
Principle:Reduce whenever possible.Shift only whenreduce isimpossible
![Page 36: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/36.jpg)
Home Page
Title Page
JJ II
J I
Page 36 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 2−
/
b ( )a
− a / b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
D Reduce by r5
![Page 37: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/37.jpg)
Home Page
Title Page
JJ II
J I
Page 37 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 3−
/
b ( )a
− a / b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
T Reduce by r4
![Page 38: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/38.jpg)
Home Page
Title Page
JJ II
J I
Page 38 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 4−
/
b ( )a
− a / b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
E Reduce by r2
![Page 39: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/39.jpg)
Home Page
Title Page
JJ II
J I
Page 39 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 5−
/
b ( )a
−
a / b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
E
Shift
![Page 40: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/40.jpg)
Home Page
Title Page
JJ II
J I
Page 40 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 6−
/
b ( )a
−
/ b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
E
Shifta
![Page 41: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/41.jpg)
Home Page
Title Page
JJ II
J I
Page 41 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 7−
/
b ( )a
−
/ b
r1. E E T
r2 E T
r3 T T D
r4 T D
r5 D | | E
E
D
E
Reduce by r5
![Page 42: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/42.jpg)
Home Page
Title Page
JJ II
J I
Page 42 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 8−
/
b ( )a
−
/ b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r4
![Page 43: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/43.jpg)
Home Page
Title Page
JJ II
J I
Page 43 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 8a−
/
b ( )a
/ b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r4−
![Page 44: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/44.jpg)
Home Page
Title Page
JJ II
J I
Page 44 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 9a−
/
b ( )a
/ b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
Reduce by r1
![Page 45: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/45.jpg)
Home Page
Title Page
JJ II
J I
Page 45 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 10a−
/
b ( )a
b
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
Shift
![Page 46: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/46.jpg)
Home Page
Title Page
JJ II
J I
Page 46 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 11a−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
Shiftb
![Page 47: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/47.jpg)
Home Page
Title Page
JJ II
J I
Page 47 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 12a−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
D Reduce by r5
![Page 48: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/48.jpg)
Home Page
Title Page
JJ II
J I
Page 48 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 13a−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r4
![Page 49: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/49.jpg)
Home Page
Title Page
JJ II
J I
Page 49 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 14a−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
E Reduce by r2Stu
ck!
Get back!
![Page 50: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/50.jpg)
Home Page
Title Page
JJ II
J I
Page 50 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 14b−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
E Reduce by r2Get back!
![Page 51: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/51.jpg)
Home Page
Title Page
JJ II
J I
Page 51 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 13b−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r4Get back!
![Page 52: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/52.jpg)
Home Page
Title Page
JJ II
J I
Page 52 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 12b−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
D Reduce by r5Get back!
![Page 53: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/53.jpg)
Home Page
Title Page
JJ II
J I
Page 53 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 11b−
/
b ( )a
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
ShiftbGet back!
![Page 54: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/54.jpg)
Home Page
Title Page
JJ II
J I
Page 54 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 10b−
/
b ( )a
b
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
ShiftGet back!
![Page 55: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/55.jpg)
Home Page
Title Page
JJ II
J I
Page 55 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 9b−
/
b ( )a
/ b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
Reduce by r1
Get back towhere youonce belonged!
![Page 56: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/56.jpg)
Home Page
Title Page
JJ II
J I
Page 56 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 8b−
/
b ( )a
/ b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r4−
Shift insteadof reduce here!
Principle:modified
Reduce whenever possible, butbut depending upon
lookahead
Shift−reduce
conflict
![Page 57: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/57.jpg)
Home Page
Title Page
JJ II
J I
Page 57 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 8−
/
b ( )a
−
/ b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r4
![Page 58: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/58.jpg)
Home Page
Title Page
JJ II
J I
Page 58 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 9−
/
b ( )a
−
/
b
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T
Shift
![Page 59: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/59.jpg)
Home Page
Title Page
JJ II
J I
Page 59 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 10−
/
( )a
−
/
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T
Shift
b
b
![Page 60: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/60.jpg)
Home Page
Title Page
JJ II
J I
Page 60 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 11−
/
b ( )a
−
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T
/
D Reduce by r5
![Page 61: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/61.jpg)
Home Page
Title Page
JJ II
J I
Page 61 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 12−
/
b ( )a
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
T Reduce by r3−
![Page 62: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/62.jpg)
Home Page
Title Page
JJ II
J I
Page 62 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: 13−
/
b ( )a
r1. E E T
r2 E T
r3 T T D
r4 D
r5 D | | E
EE
T
Reduce by r1
![Page 63: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/63.jpg)
Home Page
Title Page
JJ II
J I
Page 63 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 0−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
a− / ba
![Page 64: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/64.jpg)
Home Page
Title Page
JJ II
J I
Page 64 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 1
a − a / b
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
D
![Page 65: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/65.jpg)
Home Page
Title Page
JJ II
J I
Page 65 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 2
a − a / b
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
D
![Page 66: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/66.jpg)
Home Page
Title Page
JJ II
J I
Page 66 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 3
a − a / b
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 67: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/67.jpg)
Home Page
Title Page
JJ II
J I
Page 67 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 3a
a − a / b
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 68: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/68.jpg)
Home Page
Title Page
JJ II
J I
Page 68 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 3b
a − a / b
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 69: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/69.jpg)
Home Page
Title Page
JJ II
J I
Page 69 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 4
a − a
D
/ b
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 70: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/70.jpg)
Home Page
Title Page
JJ II
J I
Page 70 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 5
a − a
D
/ b
TT
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 71: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/71.jpg)
Home Page
Title Page
JJ II
J I
Page 71 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 5a
a − a
D
/ b
TT
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 72: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/72.jpg)
Home Page
Title Page
JJ II
J I
Page 72 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 5b
a − a
D
/ b
TT
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 73: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/73.jpg)
Home Page
Title Page
JJ II
J I
Page 73 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 6
a − a
D
/ b
D
TT
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 74: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/74.jpg)
Home Page
Title Page
JJ II
J I
Page 74 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 7
a − a
D
/ b
D
T
T
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
D
![Page 75: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/75.jpg)
Home Page
Title Page
JJ II
J I
Page 75 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parse Trees: 8
a − a
D
/ b
D
T
T
T
−r1. E E T
r2 E T
/r3 T T D b ( )aD | | Er5
r4 T D
E
E
D
![Page 76: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/76.jpg)
Home Page
Title Page
JJ II
J I
Page 76 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: Summary: 1• All high-level languages are designed so that they may
be parsed in this fashion with only a single token look-ahead.
• Parsers for a language can be automatically con-structed by parger-generators such as Yacc, Bison, ML-Yacc.
• Shift-reduce conflicts if any, are automatically detectedand reported by the parser-generator.
• Shift-reduce conflicts may be avoided by suitablyredesigning the context-free grammar.
![Page 77: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/77.jpg)
Home Page
Title Page
JJ II
J I
Page 77 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Parsing: Summary: 2• Very often shift-reduce conflicts may occur because
of the prefix problem. In such cases many parser-generators resolve the conflict in favour of shifting.
• There is also a possiblility of reduce-reduce conflicts.This usually happens when there is more than one non-terminal symbol to which the contents of the stack mayreduce.
• A minor reworking of the grammar to avoid redundantnon-terminal symbols will get rid of reduce-reduce con-flicts.
The Big Picture
![Page 78: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/78.jpg)
Home Page
Title Page
JJ II
J I
Page 78 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Semantic Analysis: 1• Every Programming langauge can be used to program
any computable function, assuming of course, it has
– unbounded memory, and
– unbounded time
• The parser of a programming language provides theframeworkwithin which the target code is to be gener-ated.
• The parser also provides a structuringmechanism thatdivides the task of code generation into bits and piecesdetermined by the individual nonterminals and produc-tion rules.
• However, contex-free grammars are not powerfulenough to represent all computable functions. Exam-ple, the language {anbncn|n > 0}.
![Page 79: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/79.jpg)
Home Page
Title Page
JJ II
J I
Page 79 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Semantic Analysis: 2• There are context-sensitive aspects of a program that
cannot be represented/enforced by a context-free gram-mar definition. Examples include
– correspondence between formal and actual param-eters
– type consistency between declaration and use.
– scope and visibility issues with respect to identifiersin a program.
![Page 80: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/80.jpg)
Home Page
Title Page
JJ II
J I
Page 80 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
![Page 81: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/81.jpg)
Home Page
Title Page
JJ II
J I
Page 81 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:0
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
![Page 82: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/82.jpg)
Home Page
Title Page
JJ II
J I
Page 82 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:1
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
3 2 1
Synthesized Attributes
![Page 83: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/83.jpg)
Home Page
Title Page
JJ II
J I
Page 83 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:2
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
3 2 1
4
Synthesized Attributes
![Page 84: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/84.jpg)
Home Page
Title Page
JJ II
J I
Page 84 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:3
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
3 2 1
Synthesized Attributes
![Page 85: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/85.jpg)
Home Page
Title Page
JJ II
J I
Page 85 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:4
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
3 2 1
Synthesized Attributes
![Page 86: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/86.jpg)
Home Page
Title Page
JJ II
J I
Page 86 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:5
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
3 2 1
Synthesized Attributes
![Page 87: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/87.jpg)
Home Page
Title Page
JJ II
J I
Page 87 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:6
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
3 2 1
Synthesized Attributes
![Page 88: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/88.jpg)
Home Page
Title Page
JJ II
J I
Page 88 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:7
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3 2 1
Synthesized Attributes
![Page 89: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/89.jpg)
Home Page
Title Page
JJ II
J I
Page 89 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:8
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3 2 1
3
Synthesized Attributes
![Page 90: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/90.jpg)
Home Page
Title Page
JJ II
J I
Page 90 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:9
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3
3 2 1
3
Synthesized Attributes
![Page 91: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/91.jpg)
Home Page
Title Page
JJ II
J I
Page 91 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:10
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3
3
3 2 1
3
Synthesized Attributes
![Page 92: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/92.jpg)
Home Page
Title Page
JJ II
J I
Page 92 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:11
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3 2
3
3 2 1
3
Synthesized Attributes
![Page 93: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/93.jpg)
Home Page
Title Page
JJ II
J I
Page 93 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:12
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3 2
23
3 2 1
3
Synthesized Attributes
![Page 94: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/94.jpg)
Home Page
Title Page
JJ II
J I
Page 94 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:13
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3 2
23
3 2 1
1
3
Synthesized Attributes
![Page 95: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/95.jpg)
Home Page
Title Page
JJ II
J I
Page 95 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Synthesized Attributes:14
ET F
T
T F
/
/
(
nF
( )E
E
) n
E T
−
−
TF
Fn
n
4
4
4
4
4
1
1
1
3 2
23
3 2 1
1
1
3
Synthesized Attributes
![Page 96: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/96.jpg)
Home Page
Title Page
JJ II
J I
Page 96 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
An Attribute Grammar
E
T
T F
/
nF
( )E
E T−
TF
Fn
n4
4
4
4
1
1
1
3 2
23
1
1
3
E0 → E1−T B E0.val := sub(E1.val, T.val)
E → T B E.val := T.val
T0 → T1/F B T0.val := div(T1.val, F.val)
T → F B T.val := F.val
F → (E) B F.val := E.val
F → n B F.val := n.val
![Page 97: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/97.jpg)
Home Page
Title Page
JJ II
J I
Page 97 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 0C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
,
![Page 98: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/98.jpg)
Home Page
Title Page
JJ II
J I
Page 98 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 1C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int
int,
![Page 99: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/99.jpg)
Home Page
Title Page
JJ II
J I
Page 99 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 2C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int int
int
int,
![Page 100: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/100.jpg)
Home Page
Title Page
JJ II
J I
Page 100 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 3C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int int
int
int,
int
![Page 101: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/101.jpg)
Home Page
Title Page
JJ II
J I
Page 101 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 4C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int int
int
int,
int
int
int
![Page 102: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/102.jpg)
Home Page
Title Page
JJ II
J I
Page 102 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 5T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int int
int
int,
int
int
int
int
int
int
![Page 103: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/103.jpg)
Home Page
Title Page
JJ II
J I
Page 103 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 6C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int int
int
int,
int
int
int
int
int
int
int
int
![Page 104: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/104.jpg)
Home Page
Title Page
JJ II
J I
Page 104 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Inherited Attributes: 7C-style declarations generating int x,y, z.
D → T L T → int | floatL → L,I | I I → x | y | z
T
int
L
z
L
L
x
I
y
I
D
I
,
,
x
D L T I
y z int
int int
int
int,
int
int
int
int
int
int
int
int
int
![Page 105: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/105.jpg)
Home Page
Title Page
JJ II
J I
Page 105 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
An Attribute Grammar
T
int
L
z
L
L
x
I
y
I
D
I
,
int
int,
int
int
int
int
int
int
int
int
int
D → TL B L.in := T.type
T → int B T.type := int.int
T → float B T.type := float.f loat
L0 → L1,I B L1 := L0.in
L → I B I.in := L.in
I → id B id.type := I.in
![Page 106: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/106.jpg)
Home Page
Title Page
JJ II
J I
Page 106 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
![Page 107: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/107.jpg)
Home Page
Title Page
JJ II
J I
Page 107 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Abstract Syntax: 0E → E−T | TT → T/F | FF → n | (E)
Suppose we want to evaluate an expression (4− 1)/2.What we actually want is a tree that looks like this:
4 1
2−−
/
![Page 108: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/108.jpg)
Home Page
Title Page
JJ II
J I
Page 108 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Evaluation: 0
4 1
2−−
/
![Page 109: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/109.jpg)
Home Page
Title Page
JJ II
J I
Page 109 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Evaluation: 1
4 1
2−−
/
![Page 110: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/110.jpg)
Home Page
Title Page
JJ II
J I
Page 110 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Evaluation: 2
2
/
3
![Page 111: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/111.jpg)
Home Page
Title Page
JJ II
J I
Page 111 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Evaluation: 3
2
/
3
![Page 112: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/112.jpg)
Home Page
Title Page
JJ II
J I
Page 112 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Evaluation: 4
1
But what we actually get during parsing is a tree that lookslike . . .
![Page 113: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/113.jpg)
Home Page
Title Page
JJ II
J I
Page 113 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Abstract Syntax: 1. . . THIS! E
T
T F
/
nF
( )E
E T−
TF
Fn
n
n n
/
n−−
![Page 114: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/114.jpg)
Home Page
Title Page
JJ II
J I
Page 114 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Abstract Syntax: 2We use attribute grammar rules to construct the abstractsyntax tree (AST)!.But in order to do that we first require two procedures fortree construction.
makeLeaf(literal ) : Creates a node with label literal and re-turns a pointer to it.
makeBinaryNode(opr, opd1, opd2): Creates a node with la-bel opr (with fields which point to opd1 and opd2) andreturns a pointer to the newly created node.
Now we may associate a synthesized attribute called ptrwith each terminal and nonterminal symbol which points tothe root of the subtree created for it.
![Page 115: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/115.jpg)
Home Page
Title Page
JJ II
J I
Page 115 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Abstract Syntax: 3E0 → E1−T B E0.ptr := makeBinaryNode(−, E1.ptr, T.ptr)
E → T B E.ptr := T.ptr
T0 → T1/F B T0.ptr := makeBinaryNode(/, T1.ptr, F.ptr)
T → F B T.ptr := F.ptr
F → (E) B F.ptr := E.ptr
F → n B F.ptr := makeLeaf (n.val)
The Big Picture
![Page 116: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/116.jpg)
Home Page
Title Page
JJ II
J I
Page 116 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Symbol Table:1• The store house of context-sensitive and run-time infor-
mation about every identifier in the source program.
• All accesses relating to an identifier require to first findthe attributes of the identifier from the symbol table
• Usually organized as a hash table – provides fast ac-cess.
• Compiler-generated temporaries may also be stored inthe symbol table
![Page 117: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/117.jpg)
Home Page
Title Page
JJ II
J I
Page 117 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Symbol Table:2Attributes stored in a symbol table for each identifier:
• type
• size
• scope/visibility information
• base address
• addresses to location of auxiliary symbol tables (in caseof records, procedures, classes)
• address of the location containing the string which ac-tually names the identifier and its length in the stringpool
![Page 118: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/118.jpg)
Home Page
Title Page
JJ II
J I
Page 118 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Symbol Table:3• A symbol table exists through out the compilation and
run-time.
• Major operations required of a symbol table:
– insertion
– search
– deletions are purely logical (depending on scopeand visibility) and not physical
• Keywords are often stored in the symbol table beforethe compilation process begins.
![Page 119: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/119.jpg)
Home Page
Title Page
JJ II
J I
Page 119 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Symbol Table:4Accesses to the symbol table at every stage of the compi-lation process,
Scanning: Insertion of new identifiers.
Parsing: Access to the symbol table to ensure that anoperand exists (declaration before use).
Semantic analysis:• Determination of types of identifiers from declara-
tions
• type checking to ensure that operands are used intype-valid contexts.
• Checking scope, visibility violations.
![Page 120: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/120.jpg)
Home Page
Title Page
JJ II
J I
Page 120 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Symbol Table:5IR generation: . Memory allocation and relativea address
calculation.
Optimization: All memory accesses through symbol table
Target code: Translation of relative addresses to absoluteaddresses in terms of word length, word boundary etc.
The Big pictureai.e.relativeto a base address that is known only at run-time
![Page 121: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/121.jpg)
Home Page
Title Page
JJ II
J I
Page 121 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IntermediateRepresentation
Intermediate representations are important for reasons ofportability.
• (more or less)independent of specific features of thehigh-level language.
Example. Java byte-code for any high-level language.
• (more or less)independent of specific features of anyparticular target architecture (e.g. number of registers,memory size)
– number of registers
– memory size
– word length
![Page 122: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/122.jpg)
Home Page
Title Page
JJ II
J I
Page 122 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR Properties: 11. It is fairly low-level containing instructions common to
all target architectures and assembly languages.
How low can you stoop? . . .
2. It contains some fairly high-level instructions that arecommon to most high-level programming languages.
How high can you rise?
3. To ensure portability
• an unbounded number of variables and memory lo-cations
• no commitment to Representational Issues
4. To ensure type-safety
• memory locations are also typed according to thedata they may contain,
• no commitment is made regarding word boundaries,and the structure of individual data items.
Next
![Page 123: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/123.jpg)
Home Page
Title Page
JJ II
J I
Page 123 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: Representation?• No commitment to word boundaries or byte boundaries
• No commitment to representation of
– int vs. float,
– float vs. double,
– packed vs. unpacked,
– strings – where and how?.
Back to IR Properties:1
![Page 124: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/124.jpg)
Home Page
Title Page
JJ II
J I
Page 124 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: How low can youstoop?
• most arithmetic and logical operations, load and storeinstructions etc.
• so as to be interpreted easily,
• the interpreter is fairly small,
• execution speeds are high,
• to have fixed length instructions (where each operandposition has a specific meaning).
Back to IR Properties:1
![Page 125: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/125.jpg)
Home Page
Title Page
JJ II
J I
Page 125 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: How high can yourise?
• typed variables,
• temporary variables instead of registers.
• array-indexing,
• random access to record fields,
• parameter-passing,
• pointers and pointer management
• no limits on memory addresses
Back to IR Properties:1
![Page 126: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/126.jpg)
Home Page
Title Page
JJ II
J I
Page 126 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 1
Three address code: A suite of instructions. Each instruc-tion has at most 3 operands.
• an opcode representing an operation with at most 2operands
• two operands on which the binary operation is per-formed
• a target operand, which accumulates the result of the(binary) operation.
If an operation requires less than 3 operands then one ormore of the operands is made null.
![Page 127: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/127.jpg)
Home Page
Title Page
JJ II
J I
Page 127 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 2
• Assignments (LOAD-STORE)
• Jumps (conditional and unconditional)
• Procedures and parameters
• Arrays and array-indexing
• Pointer Referencing and Dereferencing
![Page 128: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/128.jpg)
Home Page
Title Page
JJ II
J I
Page 128 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 2
• Assignments (LOAD-STORE)
– x := y bop z , where bop is a binary operation
– x := uop y , where uop is a unary operation
– x := y , load, store, copy or register transfer
• Jumps (conditional and unconditional)
• Procedures and parameters
• Arrays and array-indexing
• Pointer Referencing and Dereferencing
![Page 129: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/129.jpg)
Home Page
Title Page
JJ II
J I
Page 129 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 2
• Assignments (LOAD-STORE)
• Jumps (conditional and unconditional)
– goto L – Unconditional jump,
– x relop y goto L – Conditional jump, whererelop is a relational operator
• Procedures and parameters
• Arrays and array-indexing
• Pointer Referencing and Dereferencing
![Page 130: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/130.jpg)
Home Page
Title Page
JJ II
J I
Page 130 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 2
• Assignments (LOAD-STORE)
• Jumps (conditional and unconditional)
• Procedures and parameters
– call p n , where n is the number of parameters
– return y , return value from a procedures call
– param x , parameter declaration
• Arrays and array-indexing
• Pointer Referencing and Dereferencing
![Page 131: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/131.jpg)
Home Page
Title Page
JJ II
J I
Page 131 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 2
• Assignments (LOAD-STORE)
• Jumps (conditional and unconditional)
• Procedures and parameters
• Arrays and array-indexing
– x := a[i] – array indexing for r-value
– a[j] := y – array indexing for l-value
Note: The two opcodes are different depending onwhether l-valueor r-value is desired. x and y are alwayssimple variables
• Pointer Referencing and Dereferencing
![Page 132: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/132.jpg)
Home Page
Title Page
JJ II
J I
Page 132 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A typical instructionset: 2
• Assignments (LOAD-STORE)
• Jumps (conditional and unconditional)
• Procedures and parameters
• Arrays and array-indexing
• Pointer Referencing and Dereferencing
– x := ˆy – referencing: set x to point to y
– x := *y – dereferencing: copy contents of locationpointed to by y into x
– *x := y – dereferencing: copy r-valueof y into thelocation pointed to by x
Picture
![Page 133: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/133.jpg)
Home Page
Title Page
JJ II
J I
Page 133 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Pointersx
x
*y
y
@z
*x
*x @z
*zz
*zz
x := ^y
x := *y
*x := y
*y@y
@z
*z
*z
x y
yx
x y
z
x
yy
*y
*y*y
@zz
![Page 134: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/134.jpg)
Home Page
Title Page
JJ II
J I
Page 134 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: Generation• Can be generated by recursive traversal of the abstract
syntax tree.
• Can be generated by syntax-directed translation as fol-lows:
For every non-terminal symbol N in the grammar of thesource language there exist two attributes
N.place , which denotes the address of a temporaryvariable where the result of the execution of the gen-erated code is stored
N.code, which is the actual code segment generated.
• In addition a global counter for the instructions gener-ated is maintained as part of the generation process.
• It is independent of the source language but can ex-press target machine operations without committing totoo much detail.
![Page 135: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/135.jpg)
Home Page
Title Page
JJ II
J I
Page 135 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: InfrastructureGiven an abstract syntax tree T, with T also denoting itsroot node.
T.place address of temporary variable where result of exe-cution of the T is stored.
newtempreturns a freshvariable name and also installs it inthe symbol table along with relevant information
T.code the actual sequence of instructions generated forthe tree T.
newlabelreturns a label to mark an instruction in the gener-ated code which may be the target of a jump.
emit emits an instructions (regarded as a string).
![Page 136: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/136.jpg)
Home Page
Title Page
JJ II
J I
Page 136 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: InfrastructureColour and font coding of IR code generation
• Green: Nodes of the Abstract Syntax Tree
• Brown : Characters and strings of the IntermediateRepresentation
• Red: Variables and data structures of the languageinwhich the IR code generator is written
• blue: Names of relevant proceduresused in IR code gen-eration.
• Black: All other stuff.
![Page 137: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/137.jpg)
Home Page
Title Page
JJ II
J I
Page 137 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: Example
E → id B
E.place := id.place;E.code := emit()
E0 → E1 − E2 B
E0.place := newtemp;E0.code := E1.code
|| E2.code|| emit(E0.place := E1.place − E2.place)
![Page 138: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/138.jpg)
Home Page
Title Page
JJ II
J I
Page 138 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: Example
S → id := E B
S.code := E.code|| emit(id.place:=E.place)
S0 → while E do S1 B
S0.begin := newlabel;S0.after := newlabel;S0.code := emit(S0.begin:)
|| E.code|| emit(if E.place= 0 goto S0.after)|| S1.code|| emit(gotoS0.begin)|| emit(S0.after:)
![Page 139: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/139.jpg)
Home Page
Title Page
JJ II
J I
Page 139 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: Example
S → id := E B
S.code := E.code|| emit(id.place:=E.place)
S0 → while E do S1 B
S0.begin := newlabel;S0.after := newlabel;S0.code := emit(S0.begin:)
|| E.code|| emit(if E.place= 0 goto S0.after)|| S1.code|| emit(gotoS0.begin)|| emit(S0.after:)
![Page 140: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/140.jpg)
Home Page
Title Page
JJ II
J I
Page 140 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
IR: GenerationWhile generating the intermediate representation, it issometimes necessary to generate jumps into code that hasnot been generated as yet (hence the address of the labelis unknown). This usually happens while processing
• forward jumps
• short-circuit evaluation of boolean expressions
It is usual in such circumstances to either fill up the emptylabel entries in a second pass over the the code or througha process of backpatching (which is the maintenance oflists of jumps to the same instruction number), wherein theblank entries are filled in once the sequence number of thetarget instruction becomes known.
![Page 141: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/141.jpg)
Home Page
Title Page
JJ II
J I
Page 141 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
A Calling ChainMain program
Globals
Procedure P2Locals of P2
Procedure P21
Locals of P21
Body of P21
Call P21
Body of P2
Call P21
Locals of P1
Procedure P1
Body of P1
Call P2
Main body
Call P1
![Page 142: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/142.jpg)
Home Page
Title Page
JJ II
J I
Page 142 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Run-time Structure: 1Main program
Globals
Main body
Procedure P2
Locals of P2
Procedure P21
Locals of P21
Body of P2
Procedure P1
Locals of P1
Body of P1
Globals
Body of P21
![Page 143: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/143.jpg)
Home Page
Title Page
JJ II
J I
Page 143 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Run-time Structure: 2Main program
Globals
Main body
Procedure P2
Locals of P2
Procedure P21
Locals of P21
Body of P2
Procedure P1
Locals of P1
Body of P1
Globals
Formal par of P1
Locals of P1
Return address to MainDynamic link to Main
Static link to Main
Body of P21
![Page 144: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/144.jpg)
Home Page
Title Page
JJ II
J I
Page 144 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Run-time Structure: 3Main program
Globals
Main body
Procedure P2
Locals of P2
Procedure P21
Locals of P21
Body of P2
Procedure P1
Locals of P1
Body of P1
Globals
Formal par of P1
Locals of P1
Return address to Main
Formal par P2
Locals of P2
Return address to last of P1
Dynamic link to Main
Dynamic link to last P1
Static link to Main
Static link to last P1
Body of P21
![Page 145: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/145.jpg)
Home Page
Title Page
JJ II
J I
Page 145 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Run-time Structure: 4Main program
Globals
Main body
Procedure P2
Locals of P2
Procedure P21
Locals of P21
Body of P2
Procedure P1
Locals of P1
Body of P1
Globals
Formal par of P1
Locals of P1
Return address to Main
Formal par P2
Locals of P2
Return address to last of P1
Formal par P21
Locals of P21
Return address to last of P2
Dynamic link to Main
Dynamic link to last P1
Dynamic link to last P2
Static link to Main
Static link to last P1
Static link last P2
Body of P21
![Page 146: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/146.jpg)
Home Page
Title Page
JJ II
J I
Page 146 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit
Run-time Structure: 5Main program
Globals
Main body
Procedure P2
Locals of P2
Procedure P21
Locals of P21
Body of P2
Procedure P1
Locals of P1
Body of P1
Globals
Formal par of P1
Locals of P1
Return address to Main
Formal par P2
Locals of P2
Return address to last of P1
Formal par P21
Locals of P21
Return address to last of P2
Formal par P21
Locals of P21
Return address to last of P21
Dynamic link to Main
Dynamic link to last P1
Dynamic link to last P2
Dynamic link to last P21
Static link to Main
Static link to last P1
Static link last P2
Static link to last P2
Body of P21
![Page 147: Compiler design Notes, IIT Delhi](https://reader033.fdocuments.us/reader033/viewer/2022061116/5465a773af795988338b4e23/html5/thumbnails/147.jpg)
Home Page
Title Page
JJ II
J I
Page 147 of 100
Go Back
Full Screen
Close
Quit
•First •Prev •Next •Last •Go Back •Full Screen •Close •Quit