Sunday, 16 June 2019

Write a C program for constructing recursive descent parsing.



Code:
#include<stdio.h>
int flag=0;
char l;
void E();
void match(char t) {
if(l==t)
l=getchar();
else
printf("ERROR!");
}
void F() {
if(l>='a' && l<='z')
match(l);
else if(l==‘(') {
match('(');
E();
l=getchar();
}
else
flag=1;
}
void T1() {
if(l==‘*') {
match('*');
F();
T1();
}
else
return;
}
void T() {
F();
T1();
} void E1() {
if(l==‘+') {
match('+');
T();
E1();
}
else {return;}
}
void E() {
T();
E1();
}
int main() {
printf("\nE->E+T|T\n");
printf("\nT->T*F|F\n");
printf("\nF->(E)|i\n\n");
printf("ENTER THE INPUT STRING :-\n");
l=getchar();
E();
if(l=='$' && flag==0)
printf("\nPARSING COMPLETED !!\n ENTER STRING IS CORRECT\n");
else
printf("ERROR!!!");
return 0;
}


Input & Output :

[root@SAR085 Desktop]# gcc sp_7.c
[root@SAR085 Desktop]# ./a.out
E->E+T|T
T->T*F|F
F->(E)|i
1.
ENTER THE INPUT STRING :-
a*b*c$
PARSING COMPLETED !!
ENTER STRING IS CORRECT
2.
ENTER THE INPUT STRING :-
a**a
ERROR!!!

No comments:

Post a Comment

It's time To increase blogging capability. To have a chance to contribute in digital world. Any Interested People who want to make t...