Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
Compiler Construction
LECTURE # 7
The CourseCourse Code: CS-4141
Course Title: Compiler Construction
Instructor: JAWAD AHMAD◦ Email Address: [email protected]
Web Address: http://csandituoslahore.weebly.com/cc.html
Term (Semester): FALL 2017
Duration: 15/16 Weeks
mailto:[email protected]
3
Parse TreesG
E
E op E
E op Ex –
2 * y
Leftmost derivation
4
Parse TreesG
E
E op E
E op Ex –
2 * y
evaluation order
x – ( 2 * y )
5
Parse TreesG
E
op
evaluation order
(x – 2 ) * y
E
x –
E
E op E
2
* y
Rightmost
derivation
6
Precedence
These two derivations pointout a problem with thegrammar
It has no notion of precedence,or implied order of evaluation
7
Precedence
To add precedence
Create a non-terminal for each level of precedence
Isolate corresponding part of grammar
8
Precedence
To add precedence
Force parser to recognize high precedence subexpressions first.
9
Precedence
For algebraic expressions
Multiplication and division, first. (level one)
Subtraction and addition, next (level two)
10
1 Goal → expr2 expr → expr + term3 | expr – term4 | term5 term → term factor6 | term / factor7 | factor8 factor → number9 | Id
11
1 Goal → expr
2 expr → expr + term
3 | expr – term
4 | term
5 term → term factor
6 | term / factor
7 | factor
8 factor → number
9 | Id
leveltwo
levelone
12
Precedence
This grammar is larger
Takes more rewriting to reach some of the terminal symbols
But it encodes expected precedence
13
Precedence
Produces same parse tree under leftmost and rightmost derivations
Let’s see how it parses x – 2 * y
14
Precedence
Rule Sentential Form
- Goal
1 expr
3 expr – term
5 expr – term factor
9 expr – term
7 expr – factor
15
Derivations & Precedence
Rule Sentential Form
8 expr –
4 term –
7 factor –
9 –
The rightmost derivation
16
Parse Trees G
E
F
T
T F
–
*
T
E
T
evaluation orderx – ( 2 * y )
17
Precedence
Both leftmost and rightmost derivations give the sameexpression
Because the grammar directly encodes the desired precedence.
18
Ambiguous Grammars
If a grammar has more than one leftmost derivation for a single sentential form, the grammar is ambiguous
19
Ambiguous Grammars
If a grammar has more than one rightmost derivation for a single sentential form, the grammar is ambiguous
20
Ambiguous Grammars
The leftmost and rightmost derivations for a sentential form may differ, even in an unambiguous grammar
Let’s consider the classic if-then-else example
21
Ambiguous Grammars
if-then-else problem
Stmt → if Expr then Stmt
| if Expr then Stmt else Stmt
| … other stmts ….
22
Ambiguous Grammars
The following sentential form has two derivations:
if E1 then if E2 then S else S2
23
Ambiguity
Production 1,
then
Production 2:
if E1 thenif E2 then S1
else S2
E1
if
then
if
then
else
S1
S2
E2
24
Ambiguity
E1
if
then
if
then else
S1 S2
E2
Production 2,
then
Production 1:
if E1 thenif E2 then S1else S2
25
Ambiguity
E1
if
then
if
then
else
S1
S2
E2
E1
if
then
if
then else
S1 S2
E2
26
Removing Ambiguity
Must rewrite grammar to avoid generating the problem
Match each else to innermost umatched if
27
Removing Ambiguity
1. Stmt → If E then Stmt
2. | If E then WithElse else Stmt
3. | Assignment
4. WithElse → If E then WithElse else WithElse
5. | Assignment
28
Removing Ambiguity
Let derive the following using the rewritten grammar:
if E1 then if E2 then A1 else A2
29
E1
Stmt
then
else
A1 A2E2
if Expr Stmt
Stmtthenif Expr Withelse
This binds the else controlling A2 to inner if
30
Context-Free Grammars
We have been using the term context-free without explaining why such rules are in fact “free of context”.
31
Context-Free Grammars
The simple reason is that nonterminals appear by themselves to the left of the arrow in context-free rules:
A → a
32
Context-Free Grammars
The rule A → a says that A may be replaced by a anywhere, regardless of where A occurs.
33
Context-Free Grammars
On the other hand, we could define a context as pair of strings b, g, such that a rule would apply only if b occurs before and g occurs after the nonterminal A.
34
Context-Sensitive Grammars
We would write this as
b A g → b a g
Such a rule in which a ≠ e is called a context-sensitive grammar rule
Parsing Techniques
36
Parsing Techniques
Top-down parsers
Start at the root of the parse tree and grow towards leaves.
Pick a production and try to match the input
37
Parsing Techniques
Top-down parsers
Bad “pick” may need to backtrack
Some grammars are backtrack-free.
38
Parsing Techniques
Bottom-up parsers
Start at the leaves and grow toward root
As input is consumed, encode possibilities in an internal state.