SlideShare a Scribd company logo
Example-3: LL(1) parsing
EE+T | T
TT*F | F
F(E) | id
Step 1: Remove left recursion
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 2: Compute FIRST
First(E)
ETE’
First(T)
TFT’
First(F)
F(E) Fid
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
E  T E’
A  Y1 Y2
Rule 3
First(A)=First(Y1)
T  F T’
A  Y1 Y2
Rule 3
First(A)=First(Y1)
FIRST(E)=FIRST(T)
FIRST(T)=FIRST(F)
F  ( E )
A  𝛼
F  id
A  𝛼
Rule 1
add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴)
Rule 1
add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴)
FIRST(F)={ ( , id }
NT First
E { (,id }
E’
T { (,id }
T’
F { (,id }
= {(, id }
= {(, id }
Example-3: LL(1) parsing
Step 2: Compute FIRST
First(E’)
E’+TE’
E’𝜖
A  𝛼
E’  𝜖
A  𝜖
Rule 1
add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴)
Rule 2
add 𝜖 to 𝐹𝐼𝑅𝑆𝑇(𝐴)
FIRST(E’)={ + , 𝜖 }
E’  + T E’
NT First
E { (,id }
E’ { +, 𝜖 }
T { (,id }
T’
F { (,id }
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 2: Compute FIRST
First(T’)
T’*FT’
T’𝜖
A  𝛼
T’  𝜖
A  𝜖
Rule 1
add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴)
Rule 2
add 𝜖 to 𝐹𝐼𝑅𝑆𝑇(𝐴)
FIRST(T’)={ * , 𝜖 }
T’  * F T’
NT First
E { (,id }
E’ { +, 𝜖 }
T { (,id }
T’ { *, 𝜖 }
F { (,id }
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(E)
F(E) NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 }
T { (,id }
T’ { *, 𝜖 }
F { (,id }
Rule 1: Place $ in FOLLOW(E)
FOLLOW(E)={ $,
F  ( E )
A  𝛂 B 𝛃
Rule 2
) }
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(E’)
ETE’
E’+TE’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id }
T’ { *, 𝜖 }
F { (,id }
FOLLOW(E’)={ $,)
E  T E’
A  𝛂 B
Rule 3
E’  +T E’
A  𝛂 B
Rule 3
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
}
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(T)
ETE’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id }
T’ { *, 𝜖 }
F { (,id }
FOLLOW(T)={ +,
E  T E’
A  𝛼 B 𝛃
$, )
E  T E’
A  𝛼 B 𝛃
Rule 3
Rule 2
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(T)
E’+TE’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 }
F { (,id }
FOLLOW(T)={ +,
E’  + T E’
A  𝛂 B 𝛃
$, )
Rule 3
Rule 2
E’  + T E’
A  𝛂 B 𝛃
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
}
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(T’)
TFT’
T’*FT’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id }
FOLLOW(T’)={+ $,)
T  F T’
A  𝛂 B
Rule 3
T’  *F T’
A  𝛂 B
Rule 3
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
}
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(F)
TFT’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id }
FOLLOW(F)={ *,
T  F T’
A  𝛂 B 𝛃
+ ,$ , )
T  F T’
A  𝛂 B 𝛃
Rule 3
Rule 2
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 2: Compute FOLLOW
FOLLOW(F)
T’*FT’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
FOLLOW(F)={ *,+,
T’  * F T’
A  𝛂 B 𝛃
$, )
Rule 3
Rule 2
T’  * F T’
A  𝛂 B 𝛃
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
}
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
ETE’
a=FIRST(TE’)={ (,id }
M[E,(]=ETE’
M[E,id]=ETE’
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
Rule: 2
A 𝛼
a = first(𝛼)
M[A,a] = A 𝛼
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’
T
T’
F
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
E’+TE’
a=FIRST(+TE’)={ + }
M[E’,+]=E’+TE’
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’
T
T’
F
Rule: 2
A 𝛼
a = first(𝛼)
M[A,a] = A 𝛼
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
E’𝜖
b=FOLLOW(E’)={ $,) }
M[E’,$]=E’𝜖
M[E’,)]=E’𝜖
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’ E’𝜖 E’𝜖
T
T’
F
Rule: 3
A 𝛼
b = follow(A)
M[A,b] = A 𝛼
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
TFT’
a=FIRST(FT’)={ (,id }
M[T,(]=TFT’
M[T,id]=TFT’
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’ E’𝜖 E’𝜖
T TFT’ TFT’
T’
F
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Rule: 2
A 𝛼
a = first(𝛼)
M[A,a] = A 𝛼
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
T’*FT’
a=FIRST(*FT’)={ * }
M[T’,*]=T’*FT’
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’ E’𝜖 E’𝜖
T TFT’ TFT’
T’ T’*FT’
F
Rule: 2
A 𝛼
a = first(𝛼)
M[A,a] = A 𝛼
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
T’𝜖
b=FOLLOW(T’)={ +,$,) }
M[T’,+]=T’𝜖
M[T’,$]=T’𝜖
M[T’,)]=T’𝜖
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’ E’𝜖 E’𝜖
T TFT’ TFT’
T’ T’𝜖 T’*FT’ T’𝜖 T’𝜖
F
Rule: 3
A 𝛼
b = follow(A)
M[A,b] = A 𝛼
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
F(E)
a=FIRST((E))={ ( }
M[F,(]=F(E)
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’ E’𝜖 E’𝜖
T TFT’ TFT’
T’ T’𝜖 T’*FT’ T’𝜖 T’𝜖
F F(E)
Rule: 2
A 𝛼
a = first(𝛼)
M[A,a] = A 𝛼
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
Step 3: Construct predictive parsing table
Fid
a=FIRST(id)={ id }
M[F,id]=Fid
NT Input Symbol
id + * ( ) $
E ETE’ ETE’
E’ E’+TE’ E’𝜖 E’𝜖
T TFT’ TFT’
T’ T’𝜖 T’*FT’ T’𝜖 T’𝜖
F Fid F(E)
Rule: 2
A 𝛼
a = first(𝛼)
M[A,a] = A 𝛼
NT First Follow
E { (,id } { $,) }
E’ { +, 𝜖 } { $,) }
T { (,id } { +,$,) }
T’ { *, 𝜖 } { +,$,) }
F { (,id } {*,+,$,)}
ETE’
E’+TE’ | ϵ
TFT’
T’*FT’ | ϵ
F(E) | id
Example-3: LL(1) parsing
• Step 4: Make each undefined entry of table be Error
NT Input Symbol
id + * ( ) $
E ETE’ Error Error ETE’ Error Error
E’ Error E’+TE’ Error Error E’𝜖 E’𝜖
T TFT’ Error Error TFT’ Error Error
T’ Error T’𝜖 T’*FT’ Error T’𝜖 T’𝜖
F Fid Error Error F(E) Error Error
Example-3: LL(1) parsing
Step 4: Parse the string : id + id * id $
STACK INPUT OUTPUT
E$ id+id*id$
TE’$ id+id*id$ ETE’
FT’E’$ id+id*id$ TFT’
idT’E’$ id+id*id$ Fid
T’E’$ +id*id$
+TE’$ +id*id$ E’+TE’
E’$ +id*id$ T’𝜖
idT’E’$ id$ Fid
TE’$ id*id$
T’E’$ $
FT’E’$ id*id$ TFT’
E’$ $ T’𝜖
FT’E’$ id$
$ $ E’𝜖
*FT’E’$ *id$ T*FT’
T’E’$ *id$
idT’E’$ id*id$ Fid
NT Input Symbol
id + * ( ) $
E ETE’ Error Error ETE’ Error Error
E’ Error E’+TE’ Error Error E’𝜖 E’𝜖
T TFT’ Error Error TFT’ Error Error
T’ Error T’𝜖 T’*FT’ Error T’𝜖 T’𝜖
F Fid Error Error F(E) Error Error
Parsing methods
Parsing
Top down parsing Bottom up parsing (Shift reduce)
Back tracking
Parsing without
backtracking (predictive
parsing)
LR parsing
Operator precedence
LALR
CLR
SLR
Recursive
descent
LL(1)
Recursive descent parsing
• A top down parsing that executes a set of recursive procedure to process the
input without backtracking is called recursive descent parser.
• There is a procedure for each non terminal in the grammar.
• Consider RHS of any production rule as definition of the procedure.
• As it reads expected input symbol, it advances input pointer to next position.
Example: Recursive descent parsing
Procedure E
{
If lookahead=num
{
Match(num);
T();
}
Else
Error();
If lookahead=$
{
Declare success;
}
Else
Error();
}
Procedure T
{
If lookahead=’*’
{
Match(‘*’);
If lookahead=num
{
Match(num);
T();
}
Else
Error();
}
Else
NULL
}
Proceduce Match(token t)
{
If lookahead=t
lookahead=next_token;
Else
Error();
}
Procedure Error
{
Print(“Error”);
}
E
T
3 * 4 $
num T
num
* T| 𝜖
Success
Example: Recursive descent parsing
Procedure E
{
If lookahead=num
{
Match(num);
T();
}
Else
Error();
If lookahead=$
{
Declare success;
}
Else
Error();
}
Procedure T
{
If lookahead=’*’
{
Match(‘*’);
If lookahead=num
{
Match(num);
T();
}
Else
Error();
}
Else
NULL
}
Proceduce Match(token t)
{
If lookahead=t
lookahead=next_token;
Else
Error();
}
Procedure Error
{
Print(“Error”);
}
E
T
num T
num
* T| 𝜖
Success 3 4 * $ Error
3 * 4 $
Parsing Methods
Parsing
Top down parsing Bottom up parsing (Shift reduce)
Back tracking
Parsing without
backtracking (predictive
Parsing)
LR parsing
Operator precedence
LALR
CLR
SLR
Recursive
descent
LL(1)
Handle & Handle pruning
• Handle: A “handle” of a string is a substring of the string that matches the right
side of a production, and whose reduction to the non terminal of the
production is one step along the reverse of rightmost derivation.
• Handle pruning: The process of discovering a handle and reducing it to
appropriate left hand side non terminal is known as handle pruning.
EE+E
EE*E
Eid
String: id1+id2*id3
Right sentential form Handle Production
id1+id2*id3 id1 Eid
E+id2*id3 id2 Eid
E+E*id3 id3 Eid
E+E*E E*E EE*E
E+E E+E EE+E
E
Rightmost Derivation
E
E+E
E+E*E
E+E*id3
E+id2*id3
id1+id2*id3
Shift reduce parser
• The shift reduce parser performs following basic operations:
1. Shift: Moving of the symbols from input buffer onto the stack, this action is
called shift.
2. Reduce: If handle appears on the top of the stack then reduction of it by
appropriate rule is done. This action is called reduce action.
3. Accept: If stack contains start symbol only and input buffer is empty at the
same time then that action is called accept.
4. Error: A situation in which parser cannot either shift or reduce the symbols, it
cannot even perform accept action then it is called error action.
Example: Shift reduce parser
Stack Input Buffer Action
$ id+id*id$ Shift
$id +id*id$ Reduce Fid
$F +id*id$ Reduce TF
$T +id*id$ Reduce ET
$E +id*id$ Shift
$E+ id*id$ Shift
$E+id *id$ Reduce Fid
$E+F *id$ Reduce TF
$E+T *id$ Shift
$E+T* id$ Shift
$E+T*id $ Reduce Fid
$E+T*F $ Reduce TT*F
$E+T $ Reduce EE+T
$E $ Accept
Grammar:
EE+T | T
TT*F | F
Fid
String: id+id*id
Viable Prefix
• The set of prefixes of right sentential forms that can appear on the stack of a
shift-reduce parser are called viable prefixes.

More Related Content

PPTX
Compiler Design Unit 2
PPT
Top down parsing
PDF
Operator precedence
PPT
Parsing
PPTX
First and follow set
PPT
Bottom - Up Parsing
PPTX
Top down and botttom up Parsing
PPTX
Top down parsing
Compiler Design Unit 2
Top down parsing
Operator precedence
Parsing
First and follow set
Bottom - Up Parsing
Top down and botttom up Parsing
Top down parsing

What's hot (20)

PPTX
10-SLR parser practice problems-02-06-2023.pptx
PDF
Automata theory
PDF
Flat unit 3
PPTX
Asymptotic Notation
PPT
Ll(1) Parser in Compilers
PPTX
Types of Parser
PPTX
CLR AND LALR PARSER
PPTX
Context free grammar
PPTX
Merge sort algorithm power point presentation
PPTX
2.8 normal forms gnf & problems
PPTX
Regular expressions
PDF
LR(1) CLR(1) Parser with Example
PPTX
Theory of automata and formal language
PPT
Data Structure and Algorithms Linked List
PPT
DESIGN AND ANALYSIS OF ALGORITHMS
PPTX
Stressen's matrix multiplication
PPT
Turing Machine
PPTX
Church Turing Thesis
PPTX
Merge sort algorithm
PPTX
CONTEXT FREE GRAMMAR
10-SLR parser practice problems-02-06-2023.pptx
Automata theory
Flat unit 3
Asymptotic Notation
Ll(1) Parser in Compilers
Types of Parser
CLR AND LALR PARSER
Context free grammar
Merge sort algorithm power point presentation
2.8 normal forms gnf & problems
Regular expressions
LR(1) CLR(1) Parser with Example
Theory of automata and formal language
Data Structure and Algorithms Linked List
DESIGN AND ANALYSIS OF ALGORITHMS
Stressen's matrix multiplication
Turing Machine
Church Turing Thesis
Merge sort algorithm
CONTEXT FREE GRAMMAR
Ad

Similar to 6-Practice Problems - LL(1) parser-16-05-2023.pptx (20)

PPTX
LL(1) parsing
PPT
PARSING.ppt
PPT
Ch4_topdownparser_ngfjgh_ngjfhgfffdddf.PPT
PPTX
Syntax Analysis.pptx
PPTX
Top down parsing(sid) (1)
PPTX
Compiler Design_Syntax Analyzer_Top Down Parsers.pptx
PDF
LL Parsing
PPT
Cd2 [autosaved]
PPT
51114.-Compiler-Design-Syntax-Analysis-Top-down.ppt
PPT
51114.-Compiler-Design-Syntax-Analysis-Top-down.ppt
PDF
CS17604_TOP Parser Compiler Design Techniques
PPT
compiler-lecture-6nn-14112022-110738am.ppt
PDF
Left factor put
PPTX
System Programming Unit IV
PPT
Integrated Fundamental and Technical Analysis of Select Public Sector Oil Com...
PPTX
5-Top-Down Parsing natural language .pptx
PDF
Syntax Analysis PPTs for Third Year Computer Sc. and Engineering
PDF
ACD-U2-TopDown..pdf it hhepls inall the the
PPTX
3. Syntax Analyzer.pptx
LL(1) parsing
PARSING.ppt
Ch4_topdownparser_ngfjgh_ngjfhgfffdddf.PPT
Syntax Analysis.pptx
Top down parsing(sid) (1)
Compiler Design_Syntax Analyzer_Top Down Parsers.pptx
LL Parsing
Cd2 [autosaved]
51114.-Compiler-Design-Syntax-Analysis-Top-down.ppt
51114.-Compiler-Design-Syntax-Analysis-Top-down.ppt
CS17604_TOP Parser Compiler Design Techniques
compiler-lecture-6nn-14112022-110738am.ppt
Left factor put
System Programming Unit IV
Integrated Fundamental and Technical Analysis of Select Public Sector Oil Com...
5-Top-Down Parsing natural language .pptx
Syntax Analysis PPTs for Third Year Computer Sc. and Engineering
ACD-U2-TopDown..pdf it hhepls inall the the
3. Syntax Analyzer.pptx
Ad

More from venkatapranaykumarGa (13)

PPT
9-Query Processing-05-06-2023.PPT
PPTX
5-Introduction to Parsing and Context Free Grammar-09-05-2023.pptx
DOCX
13-Applications of Syntax Directed Translation - Syntax Directed Translation ...
PPT
12-Syntax Directed Definition – Evaluation Order-09-06-2023.ppt
PDF
15-CAT-2 answer key discussion-04-07-2023.pdf
DOCX
11-SLR input string parsing, CLR introduction-06-06-2023.docx
DOCX
8-Practice problems on operator precedence parser-24-05-2023.docx
PDF
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
PPTX
4-Regular expression to Deterministic Finite Automata (Direct method)-05-05-2...
PPTX
1-Phases of compiler-26-04-2023.pptx
DOCX
9-Removal of ambiguity, precedence and associativity-26-05-2023.docx
PPTX
7-Operator Precedence Parser-23-05-2023.pptx
DOCX
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx
9-Query Processing-05-06-2023.PPT
5-Introduction to Parsing and Context Free Grammar-09-05-2023.pptx
13-Applications of Syntax Directed Translation - Syntax Directed Translation ...
12-Syntax Directed Definition – Evaluation Order-09-06-2023.ppt
15-CAT-2 answer key discussion-04-07-2023.pdf
11-SLR input string parsing, CLR introduction-06-06-2023.docx
8-Practice problems on operator precedence parser-24-05-2023.docx
14-Intermediate code generation - Variants of Syntax trees - Three Address Co...
4-Regular expression to Deterministic Finite Automata (Direct method)-05-05-2...
1-Phases of compiler-26-04-2023.pptx
9-Removal of ambiguity, precedence and associativity-26-05-2023.docx
7-Operator Precedence Parser-23-05-2023.pptx
2-Design Issues, Patterns, Lexemes, Tokens-28-04-2023.docx

Recently uploaded (20)

PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PPTX
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
Institutional Correction lecture only . . .
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Business Ethics Teaching Materials for college
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
Cell Structure & Organelles in detailed.
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
O7-L3 Supply Chain Operations - ICLT Program
Supply Chain Operations Speaking Notes -ICLT Program
102 student loan defaulters named and shamed – Is someone you know on the list?
Microbial diseases, their pathogenesis and prophylaxis
FourierSeries-QuestionsWithAnswers(Part-A).pdf
STATICS OF THE RIGID BODIES Hibbelers.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Week 4 Term 3 Study Techniques revisited.pptx
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
Microbial disease of the cardiovascular and lymphatic systems
Institutional Correction lecture only . . .
TR - Agricultural Crops Production NC III.pdf
Business Ethics Teaching Materials for college
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Cell Structure & Organelles in detailed.

6-Practice Problems - LL(1) parser-16-05-2023.pptx

  • 1. Example-3: LL(1) parsing EE+T | T TT*F | F F(E) | id Step 1: Remove left recursion ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 2. Example-3: LL(1) parsing Step 2: Compute FIRST First(E) ETE’ First(T) TFT’ First(F) F(E) Fid ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id E  T E’ A  Y1 Y2 Rule 3 First(A)=First(Y1) T  F T’ A  Y1 Y2 Rule 3 First(A)=First(Y1) FIRST(E)=FIRST(T) FIRST(T)=FIRST(F) F  ( E ) A  𝛼 F  id A  𝛼 Rule 1 add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴) Rule 1 add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴) FIRST(F)={ ( , id } NT First E { (,id } E’ T { (,id } T’ F { (,id } = {(, id } = {(, id }
  • 3. Example-3: LL(1) parsing Step 2: Compute FIRST First(E’) E’+TE’ E’𝜖 A  𝛼 E’  𝜖 A  𝜖 Rule 1 add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴) Rule 2 add 𝜖 to 𝐹𝐼𝑅𝑆𝑇(𝐴) FIRST(E’)={ + , 𝜖 } E’  + T E’ NT First E { (,id } E’ { +, 𝜖 } T { (,id } T’ F { (,id } ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 4. Example-3: LL(1) parsing Step 2: Compute FIRST First(T’) T’*FT’ T’𝜖 A  𝛼 T’  𝜖 A  𝜖 Rule 1 add 𝛼 to 𝐹𝐼𝑅𝑆𝑇(𝐴) Rule 2 add 𝜖 to 𝐹𝐼𝑅𝑆𝑇(𝐴) FIRST(T’)={ * , 𝜖 } T’  * F T’ NT First E { (,id } E’ { +, 𝜖 } T { (,id } T’ { *, 𝜖 } F { (,id } ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 5. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(E) F(E) NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } T { (,id } T’ { *, 𝜖 } F { (,id } Rule 1: Place $ in FOLLOW(E) FOLLOW(E)={ $, F  ( E ) A  𝛂 B 𝛃 Rule 2 ) } ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 6. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(E’) ETE’ E’+TE’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } T’ { *, 𝜖 } F { (,id } FOLLOW(E’)={ $,) E  T E’ A  𝛂 B Rule 3 E’  +T E’ A  𝛂 B Rule 3 ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id }
  • 7. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(T) ETE’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } T’ { *, 𝜖 } F { (,id } FOLLOW(T)={ +, E  T E’ A  𝛼 B 𝛃 $, ) E  T E’ A  𝛼 B 𝛃 Rule 3 Rule 2 ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 8. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(T) E’+TE’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } F { (,id } FOLLOW(T)={ +, E’  + T E’ A  𝛂 B 𝛃 $, ) Rule 3 Rule 2 E’  + T E’ A  𝛂 B 𝛃 ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id }
  • 9. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(T’) TFT’ T’*FT’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } FOLLOW(T’)={+ $,) T  F T’ A  𝛂 B Rule 3 T’  *F T’ A  𝛂 B Rule 3 ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id }
  • 10. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(F) TFT’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } FOLLOW(F)={ *, T  F T’ A  𝛂 B 𝛃 + ,$ , ) T  F T’ A  𝛂 B 𝛃 Rule 3 Rule 2 ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 11. Example-3: LL(1) parsing Step 2: Compute FOLLOW FOLLOW(F) T’*FT’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} FOLLOW(F)={ *,+, T’  * F T’ A  𝛂 B 𝛃 $, ) Rule 3 Rule 2 T’  * F T’ A  𝛂 B 𝛃 ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id }
  • 12. Example-3: LL(1) parsing Step 3: Construct predictive parsing table ETE’ a=FIRST(TE’)={ (,id } M[E,(]=ETE’ M[E,id]=ETE’ NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} Rule: 2 A 𝛼 a = first(𝛼) M[A,a] = A 𝛼 NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ T T’ F ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 13. Example-3: LL(1) parsing Step 3: Construct predictive parsing table E’+TE’ a=FIRST(+TE’)={ + } M[E’,+]=E’+TE’ NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ T T’ F Rule: 2 A 𝛼 a = first(𝛼) M[A,a] = A 𝛼 NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 14. Example-3: LL(1) parsing Step 3: Construct predictive parsing table E’𝜖 b=FOLLOW(E’)={ $,) } M[E’,$]=E’𝜖 M[E’,)]=E’𝜖 NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ E’𝜖 E’𝜖 T T’ F Rule: 3 A 𝛼 b = follow(A) M[A,b] = A 𝛼 NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 15. Example-3: LL(1) parsing Step 3: Construct predictive parsing table TFT’ a=FIRST(FT’)={ (,id } M[T,(]=TFT’ M[T,id]=TFT’ NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ E’𝜖 E’𝜖 T TFT’ TFT’ T’ F NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id Rule: 2 A 𝛼 a = first(𝛼) M[A,a] = A 𝛼
  • 16. Example-3: LL(1) parsing Step 3: Construct predictive parsing table T’*FT’ a=FIRST(*FT’)={ * } M[T’,*]=T’*FT’ NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ E’𝜖 E’𝜖 T TFT’ TFT’ T’ T’*FT’ F Rule: 2 A 𝛼 a = first(𝛼) M[A,a] = A 𝛼 NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 17. Example-3: LL(1) parsing Step 3: Construct predictive parsing table T’𝜖 b=FOLLOW(T’)={ +,$,) } M[T’,+]=T’𝜖 M[T’,$]=T’𝜖 M[T’,)]=T’𝜖 NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ E’𝜖 E’𝜖 T TFT’ TFT’ T’ T’𝜖 T’*FT’ T’𝜖 T’𝜖 F Rule: 3 A 𝛼 b = follow(A) M[A,b] = A 𝛼 NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 18. Example-3: LL(1) parsing Step 3: Construct predictive parsing table F(E) a=FIRST((E))={ ( } M[F,(]=F(E) NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ E’𝜖 E’𝜖 T TFT’ TFT’ T’ T’𝜖 T’*FT’ T’𝜖 T’𝜖 F F(E) Rule: 2 A 𝛼 a = first(𝛼) M[A,a] = A 𝛼 NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 19. Example-3: LL(1) parsing Step 3: Construct predictive parsing table Fid a=FIRST(id)={ id } M[F,id]=Fid NT Input Symbol id + * ( ) $ E ETE’ ETE’ E’ E’+TE’ E’𝜖 E’𝜖 T TFT’ TFT’ T’ T’𝜖 T’*FT’ T’𝜖 T’𝜖 F Fid F(E) Rule: 2 A 𝛼 a = first(𝛼) M[A,a] = A 𝛼 NT First Follow E { (,id } { $,) } E’ { +, 𝜖 } { $,) } T { (,id } { +,$,) } T’ { *, 𝜖 } { +,$,) } F { (,id } {*,+,$,)} ETE’ E’+TE’ | ϵ TFT’ T’*FT’ | ϵ F(E) | id
  • 20. Example-3: LL(1) parsing • Step 4: Make each undefined entry of table be Error NT Input Symbol id + * ( ) $ E ETE’ Error Error ETE’ Error Error E’ Error E’+TE’ Error Error E’𝜖 E’𝜖 T TFT’ Error Error TFT’ Error Error T’ Error T’𝜖 T’*FT’ Error T’𝜖 T’𝜖 F Fid Error Error F(E) Error Error
  • 21. Example-3: LL(1) parsing Step 4: Parse the string : id + id * id $ STACK INPUT OUTPUT E$ id+id*id$ TE’$ id+id*id$ ETE’ FT’E’$ id+id*id$ TFT’ idT’E’$ id+id*id$ Fid T’E’$ +id*id$ +TE’$ +id*id$ E’+TE’ E’$ +id*id$ T’𝜖 idT’E’$ id$ Fid TE’$ id*id$ T’E’$ $ FT’E’$ id*id$ TFT’ E’$ $ T’𝜖 FT’E’$ id$ $ $ E’𝜖 *FT’E’$ *id$ T*FT’ T’E’$ *id$ idT’E’$ id*id$ Fid NT Input Symbol id + * ( ) $ E ETE’ Error Error ETE’ Error Error E’ Error E’+TE’ Error Error E’𝜖 E’𝜖 T TFT’ Error Error TFT’ Error Error T’ Error T’𝜖 T’*FT’ Error T’𝜖 T’𝜖 F Fid Error Error F(E) Error Error
  • 22. Parsing methods Parsing Top down parsing Bottom up parsing (Shift reduce) Back tracking Parsing without backtracking (predictive parsing) LR parsing Operator precedence LALR CLR SLR Recursive descent LL(1)
  • 23. Recursive descent parsing • A top down parsing that executes a set of recursive procedure to process the input without backtracking is called recursive descent parser. • There is a procedure for each non terminal in the grammar. • Consider RHS of any production rule as definition of the procedure. • As it reads expected input symbol, it advances input pointer to next position.
  • 24. Example: Recursive descent parsing Procedure E { If lookahead=num { Match(num); T(); } Else Error(); If lookahead=$ { Declare success; } Else Error(); } Procedure T { If lookahead=’*’ { Match(‘*’); If lookahead=num { Match(num); T(); } Else Error(); } Else NULL } Proceduce Match(token t) { If lookahead=t lookahead=next_token; Else Error(); } Procedure Error { Print(“Error”); } E T 3 * 4 $ num T num * T| 𝜖 Success
  • 25. Example: Recursive descent parsing Procedure E { If lookahead=num { Match(num); T(); } Else Error(); If lookahead=$ { Declare success; } Else Error(); } Procedure T { If lookahead=’*’ { Match(‘*’); If lookahead=num { Match(num); T(); } Else Error(); } Else NULL } Proceduce Match(token t) { If lookahead=t lookahead=next_token; Else Error(); } Procedure Error { Print(“Error”); } E T num T num * T| 𝜖 Success 3 4 * $ Error 3 * 4 $
  • 26. Parsing Methods Parsing Top down parsing Bottom up parsing (Shift reduce) Back tracking Parsing without backtracking (predictive Parsing) LR parsing Operator precedence LALR CLR SLR Recursive descent LL(1)
  • 27. Handle & Handle pruning • Handle: A “handle” of a string is a substring of the string that matches the right side of a production, and whose reduction to the non terminal of the production is one step along the reverse of rightmost derivation. • Handle pruning: The process of discovering a handle and reducing it to appropriate left hand side non terminal is known as handle pruning. EE+E EE*E Eid String: id1+id2*id3 Right sentential form Handle Production id1+id2*id3 id1 Eid E+id2*id3 id2 Eid E+E*id3 id3 Eid E+E*E E*E EE*E E+E E+E EE+E E Rightmost Derivation E E+E E+E*E E+E*id3 E+id2*id3 id1+id2*id3
  • 28. Shift reduce parser • The shift reduce parser performs following basic operations: 1. Shift: Moving of the symbols from input buffer onto the stack, this action is called shift. 2. Reduce: If handle appears on the top of the stack then reduction of it by appropriate rule is done. This action is called reduce action. 3. Accept: If stack contains start symbol only and input buffer is empty at the same time then that action is called accept. 4. Error: A situation in which parser cannot either shift or reduce the symbols, it cannot even perform accept action then it is called error action.
  • 29. Example: Shift reduce parser Stack Input Buffer Action $ id+id*id$ Shift $id +id*id$ Reduce Fid $F +id*id$ Reduce TF $T +id*id$ Reduce ET $E +id*id$ Shift $E+ id*id$ Shift $E+id *id$ Reduce Fid $E+F *id$ Reduce TF $E+T *id$ Shift $E+T* id$ Shift $E+T*id $ Reduce Fid $E+T*F $ Reduce TT*F $E+T $ Reduce EE+T $E $ Accept Grammar: EE+T | T TT*F | F Fid String: id+id*id
  • 30. Viable Prefix • The set of prefixes of right sentential forms that can appear on the stack of a shift-reduce parser are called viable prefixes.