#include<stdio.h> #include<string.h> void main()
{
char input[100], l[50],r[50],temp[10],tempprod[20],productions[25][50]; int i=0,j=0,flag=0,consumed=0;
printf(“Enter the Productions:”); scanf(“ %ls->%s”, l, r);
printf(“ %s”, r);
while(sscanf(r+consumed, “ % [^l] s”, temp) == 1 &&consumed<=strlen(r))
{
if(temp[0] == l[0])
{
flag = 1;
sprintf(productions[i++], “%s->%s%s ‘\0”, l,temp+1,1);
}
else
sprintf(productions[i++], “%s->%s%s ‘\0”,l, temp,1); consumed += strlen(temp)+1;
}
if(flag==1)
{
sprintf(productions[i++], “%s->€ \0”, 1);
printf(“the productions after eliminating left recursion are:\n”); for(j=0;j<i;j++)
printf(“%s \n “, productions[j]);
}
else
printf(“ The Given Grammar has no Left Recursion”);
}
I2luY2x1ZGU8c3RkaW8uaD4gI2luY2x1ZGU8c3RyaW5nLmg+IHZvaWQgbWFpbigpCnsKY2hhciBpbnB1dFsxMDBdLCBsWzUwXSxyWzUwXSx0ZW1wWzEwXSx0ZW1wcHJvZFsyMF0scHJvZHVjdGlvbnNbMjVdWzUwXTsgaW50IGk9MCxqPTAsZmxhZz0wLGNvbnN1bWVkPTA7CnByaW50ZijigJxFbnRlciB0aGUgUHJvZHVjdGlvbnM64oCdKTsgc2NhbmYo4oCcICVscy0+JXPigJ0sIGwsIHIpOwpwcmludGYo4oCcICVz4oCdLCByKTsKd2hpbGUoc3NjYW5mKHIrY29uc3VtZWQsIOKAnCAlIFtebF0gc+KAnSwgdGVtcCkgPT0gMSAmJmNvbnN1bWVkPD1zdHJsZW4ocikpCnsKaWYodGVtcFswXSA9PSBsWzBdKQp7CmZsYWcgPSAxOwpzcHJpbnRmKHByb2R1Y3Rpb25zW2krK10sIOKAnCVzLT4lcyVzIOKAmFww4oCdLCBsLHRlbXArMSwxKTsKfQogICBlbHNlCnNwcmludGYocHJvZHVjdGlvbnNbaSsrXSwg4oCcJXMtPiVzJXMg4oCYXDDigJ0sbCwgdGVtcCwxKTsgY29uc3VtZWQgKz0gc3RybGVuKHRlbXApKzE7Cn0KaWYoZmxhZz09MSkKewpzcHJpbnRmKHByb2R1Y3Rpb25zW2krK10sIOKAnCVzLT7igqwgXDDigJ0sIDEpOwpwcmludGYo4oCcdGhlIHByb2R1Y3Rpb25zIGFmdGVyIGVsaW1pbmF0aW5nIGxlZnQgcmVjdXJzaW9uIGFyZTpcbuKAnSk7IGZvcihqPTA7ajxpO2orKykKcHJpbnRmKOKAnCVzIFxuIOKAnCwgcHJvZHVjdGlvbnNbal0pOwp9CmVsc2UKcHJpbnRmKOKAnCBUaGUgR2l2ZW4gR3JhbW1hciBoYXMgbm8gTGVmdCBSZWN1cnNpb27igJ0pOwp9CgoKCgoK