Program Code
Program Code
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define MAX_PROD 10
#define MAX_LEN 10
typedef struct
char non_terminal;
char productions[MAX_LEN];
} ProductionRule;
ProductionRule productions[MAX_PROD];
int num_productions;
int len=strlen(set);
if(strchr(set,ch)==NULL)
set[len]=ch;
set[len+1]='\0';
}
}
for(int i=0;i<num_productions;i++)
if(productions[i].non_terminal==non_terminal)
char next_char=productions[i].productions[0];
if(isTerminal(next_char))
addToSet(first,next_char);
else
computeFirst(next_char,first);
char first[MAX_LEN]="";
computeFirst(non_terminal,first);
printf("First(%c)={%s}\n",non_terminal,first);
}
int main()
scanf("%d",&num_productions);
for(int i=0;i<num_productions;i++)
scanf("%c->%s",&productions[i].non_terminal,productions[i].productions);
for(int i=0;i<num_productions;i++)
findFirst(productions[i].non_terminal);
return 0;
}
Output: