//We are writing recursive descent parser for
// E -> TE'
// E' -> +TE' | NULL
// T -> FT'
// T' -> *FT' | NULL
// F -> (E) | id
#include<stdio.h>
#include<string.h>
void E();
void T();
void F();
void Eds();
void Tds();
char input[100];
int i,error;
int main()
{
printf("Enter the input \n");
gets(input);
E();
if(i==strlen(input) && error==0)
{
printf("String is Accepted\n");
}
else
{
printf("String is Rejected\n");
}
}
void E()
{
T();
Eds();
}
void T()
{
F();
Tds();
}
void Eds()
{
if(input[i]=='+')
{
i++;
T();
Eds();
}
}
void Tds()
{
if(input[i]=='*')
{
i++;
F();
Tds();
}
}
void F()
{
if((input[i]>='a'&&input[i]<='z') || (input[i]>='A'&&input[i]<='Z'))
{
i++;
}
else if(input[i]=='(')
{
i++;
E();
if(input[i]==')')
{
i++;
}
else
{
error=1;
}
}
else
{
error=1;
}
}
// E -> TE'
// E' -> +TE' | NULL
// T -> FT'
// T' -> *FT' | NULL
// F -> (E) | id
#include<stdio.h>
#include<string.h>
void E();
void T();
void F();
void Eds();
void Tds();
char input[100];
int i,error;
int main()
{
printf("Enter the input \n");
gets(input);
E();
if(i==strlen(input) && error==0)
{
printf("String is Accepted\n");
}
else
{
printf("String is Rejected\n");
}
}
void E()
{
T();
Eds();
}
void T()
{
F();
Tds();
}
void Eds()
{
if(input[i]=='+')
{
i++;
T();
Eds();
}
}
void Tds()
{
if(input[i]=='*')
{
i++;
F();
Tds();
}
}
void F()
{
if((input[i]>='a'&&input[i]<='z') || (input[i]>='A'&&input[i]<='Z'))
{
i++;
}
else if(input[i]=='(')
{
i++;
E();
if(input[i]==')')
{
i++;
}
else
{
error=1;
}
}
else
{
error=1;
}
}
No comments:
Post a Comment