/*This Program implements the Predictive Parsing Of the grammar E->E+T/T F->F*T/F F->id(Identifier)*/ #include<string.h> #include<stdio.h> char a[10]; int top=-1,i; void error(){ printf("Syntax Error"); } void push(char k[]) //Pushes The Set Of Characters on to the Stack { for(i=0;k[i]!='\0';i++) { if(top<9) a[++top]=k[i]; } } char TOS() //Returns TOP of the Stack { return a[top]; } void pop() //Pops 1 element from the Stack { if(top>=0) a[top--]='\0'; } void display() //Displays Elements Of Stack { for(i=0;i<=top;i++) printf("%c",a[i]); } void display1(char p[],int m) //Displays The Present Input String { int l; printf("\t"); for(l=m;p[l]!='\0';l++) printf("%c",p[l]); } char* stack(){ return a; } int main() { char ip[20],r[20],st,an; int ir,ic,j=0,k; char t[5][6][10]= {"$","$","TH","$","TH","$", "+TH","$","e","e","$","e", "$","$","FU","$","FU","$", "e","*FU","e","e","$","e", "$","$","(E)","$","i","$"}; printf("\nEnter any String(Append with $)"); gets(ip); printf("Stack\tInput\tOutput\n"); push("$E"); display(); printf("\t%s\n",ip); for(j=0;ip[j]!='\0';) { if(TOS()==an) { pop(); display(); display1(ip,j+1); printf("\tPOP\n"); j++; } an=ip[j]; st=TOS(); if(st=='E')ir=0; else if(st=='H')ir=1; else if(st=='T')ir=2; else if(st=='U')ir=3; else if(st=='F')ir=4; else { error(); break; } if(an=='+')ic=0; else if(an=='*')ic=1; else if(an=='(')ic=2; else if(an==')')ic=3; else if((an>='a'&&an<='z')||(an>='A'&&an<='Z')){ic=4;an='i';} else if(an=='$')ic=5; strcpy(r,strrev(t[ir][ic])); strrev(t[ir][ic]); pop(); push(r); if(TOS()=='e') { pop(); display(); display1(ip,j); printf("\t%c->%c\n",st,238); } else{ display(); display1(ip,j); printf("\t%c->%s\n",st,t[ir][ic]); } if(TOS()=='$'&& an=='$') break; if(TOS()=='$') { error(); break; } } k=strcmp(stack(),"$"); if(k==0 && j==strlen(ip)-1) printf("\nGiven String is accepted"); else printf("\nGiven String is not accepted"); return 0; }
Find all Programs and practical list here from "labels" !!! For other languages visit - www.kanulp.wordpress.com
Search This Blog
Wednesday, 12 October 2016
Predictive Parsing Of the grammar
Labels:
sp
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment