Structure Ofa Compiler: Front End
Structure Ofa Compiler: Front End
Lexical Analyzer
Target Language
Copyright@Mudassar
1 Zaidi,University of Sargodha
Source Language
Lexical Analyzer
Now!
Syntax Analyzer Front
End
Semantic Analyzer
Intermediate Code
Target Language
Copyright@Mudassar
2 Zaidi,University of Sargodha
THE ROLE OF THE PARSER
Lexical Parser
input
Analyzer
Push back Get Next Token
character
Symbol
Table
Copyright@Mudassar
3 Zaidi,University of Sargodha
Where is Syntax Analysis?
if (idx == 0) idx = 750;
if
== = Abstract syntax tree
idx 0 idx 750 or parse tree
Copyright@Mudassar
4 Zaidi,University of Sargodha
Parsing Analogy
Copyright@Mudassar
5 Zaidi,University of Sargodha
Parsing Analogy
- Syntax analysis for natural languages
-Identify the function of each word
- Recognize if a sentence is grammatically correct
sentence
Copyright@Mudassar
6 Zaidi,University of Sargodha
Syntax Analysis Overview
Copyright@Mudassar
7 Zaidi,University of Sargodha
Syntax Analysis(Parsing)
8 Copyright@Mudassar
Syntax Analysis(Parsing)
(cont’d)
9 Copyright@Mudassar
The Parsing Process
Copyright@Mudassar
11 Zaidi,University of Sargodha
Context-Free Grammar
12
Context-Free Grammar(Cont’d)
13
Context-Free Grammar(Cont’d)
14
Context-Free Grammar(Cont’d)
15
Context-Free Grammar(con’t)
Consist of 4 components (Backus-Naur Form or
BNF):
1) A set of tokens , known as terminal symbol
2) A set of non terminals.
3) A set of productions where each production
consists of non-terminals , called the left side of the
production , an arrow and a sequence of tokens and
for non-terminals called right side of the production.
4) A designation of one of the non-terminals as the
starts symbol.
Copyright@Mudassar
16 Zaidi,University of Sargodha
Context-Free Grammar(con’t)
EXAMPLE:
expr expr op expr
expr ( expr )
expr id
op +
op -
op *
Copyright@Mudassar
17 Zaidi,University of Sargodha
Context-Free Grammar(cont’d)
Terminal Symbols :
id , + , -, *, ( , )
Non-Terminal Symbols:
expr,op
Start Symbol
expr
Production
expr expr op expr
Copyright@Mudassar
18 Zaidi,University of Sargodha
Example 1
Copyright@Mudassar
19 Zaidi,University of Sargodha
Example 1(Cont’d)
The productions are:
List list + digits (1)
List list – digits (2)
List digit (3)
Digit 0,1,2,3,4,5,6,7,8,9
Copyright@Mudassar
20 Zaidi,University of Sargodha
Example 1(Cont’d)
Copyright@Mudassar
21 Zaidi,University of Sargodha
Example 1(Cont’d)
Copyright@Mudassar
22 Zaidi,University of Sargodha
Example 1(Cont’d)
Copyright@Mudassar
23 Zaidi,University of Sargodha
Example 1(Cont’d)
Copyright@Mudassar
24 Zaidi,University of Sargodha
Example 1(Cont’d)
List
List Digit
List Digit
Digit
9 - 5 + 2
Copyright@Mudassar
26 Zaidi,University of Sargodha
Parse Tree
Copyright@Mudassar
27 Zaidi,University of Sargodha
Parse Tree(Cont’d)
X Y Z
Formally , given a context free grammar , a parse
tree is a tree with the following properties;
Copyright@Mudassar
28 Zaidi,University of Sargodha
Defining a Parse Tree
Copyright@Mudassar
29 Zaidi,University of Sargodha
Ambiguity
Copyright@Mudassar
30 Zaidi,University of Sargodha
Ambiguity (Cont’d)
Copyright@Mudassar
31 Zaidi,University of Sargodha
Ambiguity (Cont’d)
List
List
List
List List
9 - 5 + 2
Copyright@Mudassar
32 Zaidi,University of Sargodha
Ambiguity (Cont’d)
List
List List
List
List
9 - 5 + 2
Copyright@Mudassar
33 Zaidi,University of Sargodha
True Derivation
Copyright@Mudassar
35 Zaidi,University of Sargodha
Parse Tree Construction
Start
Expr
Expr Op Expr
Open Expr Close Op Expr
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int
(2 - 1) + 1
Copyright@Mudassar
36 Zaidi,University of Sargodha
Parse Tree Construction
Start
Expr
Expr Op Expr
Open Expr Close Op Expr
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int
(2 - 1) + 1
Copyright@Mudassar
37 Zaidi,University of Sargodha
Parse Tree Construction
Start
1) Start Expr
2) Expr Expr Op Expr
3) Expr Int Expr
4) Expr Open Expr Close
Start
Expr
Expr Op Expr
Open Expr Close Op Expr
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int
(2 - 1) + 1
Copyright@Mudassar
38 Zaidi,University of Sargodha
Parse Tree Construction
1) Start Expr
2) Expr Expr Op Expr Start
3) Expr Int
4) Expr Open Expr Close Expr
Start
Expr Expr Op Expr
Expr Op Expr
Open Expr Close Op Expr
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int
(2 - 1) + 1
Copyright@Mudassar
40 Zaidi,University of Sargodha
Parse Tree Construction
1) Start Expr
2) Expr Expr Op Expr
Start
3) Expr Int
4) Expr Open Expr Close Expr
Start
Expr Expr Op Expr
Expr Op Expr
Open Expr Close Op Expr Open Expr Close
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int
(2 - 1) + 1
Copyright@Mudassar
41 Zaidi,University of Sargodha
Parse Tree Construction
Start
1) Start Expr
2) Expr Expr Op Expr Expr
3) Expr Int
4) Expr Open Expr Close
Expr Op Expr
Start
Expr Open Expr Close
Expr Op Expr
Open Expr Close Op Expr
Expr Op Expr
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int
(2 - 1) + 1 Copyright@Mudassar
44 Zaidi,University of Sargodha
Parse Tree Construction
Start
1) Start Expr
2) Expr Expr Op Expr Expr
3) Expr Int
4) Expr Open Expr Close Expr Op Expr
Start
Expr Open Expr Close Int
Expr Op Expr
Open Expr Close Op Expr Expr Op Expr
Open Expr Op Expr Close Op Expr
Open Int Op Int Close Op Int Int Int
(2 - 1) + 1
46
Copyright@Mudassar DONE!
Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
Copyright@Mudassar
47 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
Copyright@Mudassar
48 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
49 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
50 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
51 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
52 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
53 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
54 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
55 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
56 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int Int
( 2 - 1 ) + 1
Copyright@Mudassar
57 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr Op Expr
Int(2) Int
( 2 - 1 ) + 1
Copyright@Mudassar
58 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr(2) Op Expr
Int(2) Int
( 2 - 1 ) + 1
Copyright@Mudassar
59 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Expr(2) Op Expr
Int(2) Int
( 2 - 1 ) + 1
Copyright@Mudassar
60 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int
( 2 - 1 ) + 1
Copyright@Mudassar
61 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int
( 2 - 1 ) + 1
Copyright@Mudassar
62 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int
( 2 - 1 ) + 1
Copyright@Mudassar
63 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
64 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
65 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
66 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
67 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
68 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr(1) Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
69 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Expr(1) Op Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
70 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
71 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
72 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
73 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
74 Zaidi,University of Sargodha
Processing the Tree
Start
Expr
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
75 Zaidi,University of Sargodha
Processing the Tree
Start
Expr(2)
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
76 Zaidi,University of Sargodha
Processing the Tree
Start(2)
Expr(2)
Int(2) Int(1)
( 2 - 1 ) + 1
Copyright@Mudassar
77 Zaidi,University of Sargodha
General Grammar
Copyright@Mudassar
78 Zaidi,University of Sargodha
CFG - Example
Grammar for balanced-parentheses language
– S(S)S
– S
1 non-terminal: S
3 terminals: “(”, “)”,ε
Start symbol: S
2 productions
If grammar accepts a string, there is a derivation of that
string using the productions
– How do we produce: (())
– S = (S) = ((S) S) = (() ) = (())
Copyright@Mudassar
79 Zaidi,University of Sargodha
Stack based algorithm
Copyright@Mudassar
80 Zaidi,University of Sargodha
Demonstration
Grammar
S ( S ) S |
Copyright@Mudassar
81 Zaidi,University of Sargodha
Demonstration
S
$
Copyright@Mudassar
83 Zaidi,University of Sargodha
The Grammar The Input
S ( S ) S | ()$
(
Replace it with a rule from the
grammar: S ( S ) S S
Note that the rule is pushed )
onto the stack from right to left S
$
Copyright@Mudassar
84 Zaidi,University of Sargodha
Demonstration
(
Characters matched are
S
removed from both stack and
input stream )
S
$
Copyright@Mudassar
86 Zaidi,University of Sargodha
Demonstration
$
Copyright@Mudassar
94 Zaidi,University of Sargodha
THANKS
Copyright@Mudassar
95 Zaidi,University of Sargodha