0% found this document useful (0 votes)
17 views

Predictive Parser

The document describes an algorithm for predictive parsing. It discusses eliminating left recursion, computing the first and follow sets, and constructing a parsing table which can be used to parse an input string according to the grammar rules.

Uploaded by

Aadil
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Predictive Parser

The document describes an algorithm for predictive parsing. It discusses eliminating left recursion, computing the first and follow sets, and constructing a parsing table which can be used to parse an input string according to the grammar rules.

Uploaded by

Aadil
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Predictive Parser

Predictive Parsing Algorithm


Eliminate Left Recursion
Algorithm to Compute First
Algorithm to Compute Follow
Algorithm to Construct Parsing Table
Parsing of Input String
Elimination of Left Recursion

A  A α | β where α , β are strings and A is non


terminal.

After Elimination of Left Recursion


A  β A ‘
A’  α A’ | ε
Algorithm to Compute First
Step 1 :- If ‘a’ is terminal then first of ‘a’ is { a}.
Means if A a , then First (A) = { a }, where a is terminal symbol.

Step 2:- If there is production of form


A  A1 A2 A3 … An , where A1, A2, A3,…, An are non terminal
symbol, then First (A) = { First(A1) U First(A2) U First (A3) U …. U
First (An) } if A1,A2,A3,…,An derives to ε.
Cases :-
If A1 is not deriving to ε, then First(A) = { First (A1)}
If A1 derives to ε, then First(A) = { First(A1) U First(A2)}
If A1 and A2 derive to ε, then First (A) = { First(A1) U First(A2) U
First (A3) }
Algorithm to Compute Follow
Step 1:- Add ‘$’ to Follow(S), where S is a start symbol.
Step 2:- A  α B β , then add First (β) except ε to
Follow(B).
Step 3:- If the production is of form A  αB or A  α
B β where β derives to ε with one or more derivation,
then copy Follow(A) into Follow(B).
S  D V
D  int | float | char
V  id V’
V’  , id V’ | ε

First(S) = {
First (D) ={int , float, char }
First (V) = {
First(V’) ={
S  D V
D  int | float | char
V  id V’
V’  , id V’ | ε

First(S) = {
First (D) ={ int , char, float }
First (V) = { id }
First(V’) ={
S  D V
D  int | float | char
V  id V’
V’  , id V’ | ε

First(S) = {
First (D) ={ int , char, float }
First (V) = { id }
First(V’) ={ , }
S  D V
D  int | float | char
V  id V’
V’  , id V’ | ε

First(S) = { First(D) } = { int, char, float }


First (D) ={ int , char, float }
First (V) = { id }
First(V’) ={ , }
S  DV
D  int | float | char
V  id V’
V’  , id V’ | ε

Follow(S) = {$
Follow(D)={
Follow(V){
Follow(V’)={
S  DV
D  int | float | char
V  id V’
V’  , id V’ | ε

Follow(S) = {$
Follow(D)={
Follow(V){$
Follow(V’)={
S  DV
D  int | float | char
V  id V’
V’  , id V’ | ε

Follow(S) = {$
Follow(D)={id
Follow(V){$
Follow(V’)={
S  DV
D  int | float | char
V  id V’
V’  , id V’ | ε

Follow(S) = {$ }
Follow(D)={id }
Follow(V){$ }
Follow(V’)={ }

You might also like