Aim:
Write down program to find first and follow position for particular grammar.
#include<stdio.h>
#include<conio.h>
void S1();
void A1();
void E1();
void S();
void A();
void E();
int i,j,k,go;
char
first[5],pro,follow[5];
void main()
{
clrscr();
i=0;
j=0;
printf("\n\n=================First
& Follow==================\n\n");
printf("S -> iEtSA |
a\n");
printf("A -> eS | ^\n");
printf("E -> b");
printf("\n\nEnter the alphabet
:--> ");
scanf("%c",&pro);
printf("\n\n press [1] to find
FIRST set \n\n press [0] to find FOLLOW set \n\n");
scanf("%d",&go);
if(go==1)
{
if(pro=='S')
{
S1();
}
else if(pro=='A')
{
A1();
}
else if(pro=='E')
{
E1();
}
else if(pro=='a' ||
pro=='e' || pro=='b')
{
first[i]=pro;
}
else if(pro=='\n')
{
first[i]='^';
}
else
{
printf("\nCannot
find the first set of given input");
goto end;
}
printf("\n\nFIRST[ %c ] =
{ %s }",pro,first);
}
else
{
if(pro=='S')
{
S();
}
else if(pro=='A')
{
A();
}
else if(pro=='E')
{
E();
}
else
{
printf("\nCannot
find the follow set of given input");
goto end;
}
printf("\n\nFOLLOW[ %c ]
= { %s }",pro,follow);
}
end: getch();
}
void S1()
{
first[i]='a';
i++;
first[i]='i';
}
void A1()
{
first[i]='e';
i++;
first[i]='^';
}
void E1()
{
first[i]='b';
}
void S()
{
follow[j]='$';
j++;
follow[j]='e';
}
void A()
{
S();
}
void E()
{
follow[j]='t';
}
}
output:
No comments:
Post a Comment