Tuesday, November 6, 2007

Left Recursion

Program : Left Recursion



#include<stdio.h>

#include<conio.h>

#include<string.h>


void main() //main function

{

char pro[20],alph[10],beta[10];

int i,len,u,pos;

clrscr();

printf("Enter the production\t");

gets(pro); //get the input production

len=strlen(pro); //find length of production

pos=3;

u=0;



if(pro[0]!=pro[2]) //check production is non left recursive

{

printf("\nProduction is not left recursive\n");


}



else //if production is left recursive

{

printf("\nProduction is left recursive\n");



for(i=3;i<=len;i++) //converting to non left recursive production

{

if(pro[i]!='|')

{

alph[u]=pro[i];

u++;

pos++;

}

else

{

break;

}

alph[u]='\0';

}

pos++;

u=0;



for(i=pos;i<=len;i++)

{

beta[u]=pro[i];

u++;

}





beta[u]='\0';


printf("\n\nEquivalent non left recursive grammar is:\n");


printf("\n%c=%s%c'\n",pro[0],beta,pro[0]);


printf("\n%c'=%s%c'|e\n",pro[0],alph,pro[0]);


}



getch();

}


0 comments: