About

Kannur University btech CSE study materials, question papers, syllabus . . .

Saturday, June 8, 2013

S6 CSE COMPILER LAB : RECURSIVE DESCENT PARSER

                  
 /*   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