0% found this document useful (0 votes)
23 views13 pages

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 input strings according to the grammar.

Uploaded by

Aadil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views13 pages

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 input strings according to the grammar.

Uploaded by

Aadil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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