/* RECURSIVE
DESCENT PARSER */
#include<stdio.h>
#include<ctype.h>
#include<string.h>
char expr[50];
int i=0;
int E();
int ED();
int T();
int TD();
int F();
int main()
{
printf("\nEnter
the expression: ");
gets(expr);
puts(expr);
if(E()==1)
printf("\nThe given expression is
valid\n");
else
printf("The given expression is
invalid\n");
}
int E()
{
if(T()==1)
if(ED()==1)
return 1;
else
return 0;
else
return 0;
return 1;
}
int ED()
{
if(expr[i]=='+'||expr[i]=='-')
{
i++;
if(T()==1)
{
if(ED()==1)
return 1;
else
return 0;
}
else
return 0;
}
else if(expr[i]=='\0')
return 1;
return 1;
}
int T()
{
if(F()==1)
{
i++;
if(TD()==1)
return 1;
else
return 0;
}
else
return 0;
return 1;
}
int TD()
{
if(expr[i]=='*'||expr[i]=='/')
{
i++;
if(F()==1)
{
if(TD()==1)
return 1;
else
return 0;
}
else
return 0;
}
else if(expr[i]=='\0')
return 1;
return 1;
}
int F()
{
if(expr[i]=='(')
{
i++;
if(E()==0)
{
if(expr[i]==')')
return 1;
else
return 0;
}
else
return 0;
}
else if(isalpha(expr[i])!=0)
return 1;
else
return 0;
return 1;
}
OUTPUT
Enter the
expression: a+b-c(d+c/a)
a+b-c(d+c/a)
The given
expression is valid
Enter the
expression: a+b*(d-b
a+b*(d-b
The given
expression is invalid






0 comments:
Post a Comment