/*OPERATOR PRECEDENCE TABLE*/ #include<stdio.h> #include<conio.h> void main() { char lead[10][10],trail[10][10],pro[10][10],ter[10],opt[10][10][10],nt[10]; int i,j,k,flag=0,n,inc=0,tptr=0,index=0,row,col,in,l; for(i=0;i<10;i++){ ter[i]=NULL; for(j=0;j<10;j++){ lead[i][j]=NULL; trail[i][j]=NULL; pro[i][j]=NULL; for(k=0;k<10;k++){opt[i][j][k]=NULL;}}} clrscr(); printf("Enter the number of productions:"); scanf("%d",&n); printf("Enter the productions:"); for(i=0;i<n;i++) { scanf("%s",pro[i]); } for(i=0;i<n;i++) { flag=0; for(j=0;j<inc;j++) { if(pro[i][0]==nt[j]) { flag=1; } } if(flag==0){nt[inc++]=pro[i][0];} } printf("\nEnter the leading:\n"); for(i=0;i<inc;i++) { printf("Leading(%c):",nt[i]); scanf("%s",lead[i]); } printf("\nEnter the trailing:\n"); for(i=0;i<inc;i++) { printf("Trailing(%c):",nt[i]); scanf("%s",trail[i]); } for(i=0;i<inc;i++) { for(k=0;k<strlen(trail[i]);k++) { flag=0; for(j=0;j<tptr;j++) { if(trail[i][k]==ter[j]) flag=1; } if(flag==0){ter[tptr++]=trail[i][k];}} } for(i=0;i<inc;i++) { for(k=0;k<strlen(lead[i]);k++) { flag=0; for(j=0;j<tptr;j++) { if(lead[i][k]==ter[j]) flag=1; } if(flag==0){ter[tptr++]=lead[i][k]; } } } ter[tptr++]='$'; for(j=0;j<tptr;j++){ if(ter[j]=='$')col=j; } for(j=0;j<strlen(lead[0]);j++) { for(k=0;k<tptr;k++){if(lead[0][j]==ter[k])row=k;} opt[col][row][index]='<'; } for(j=0;j<tptr;j++){ if(ter[j]=='$')row=j; } for(j=0;j<strlen(trail[0]);j++) { for(k=0;k<tptr;k++){if(trail[0][j]==ter[k])col=k;} opt[col][row][index]='>'; } for(i=0;i<n;i++) { for(j=3;j<strlen(pro[i]);j++) { if((!isupper(pro[i][j]))&&(j!=strlen(pro[i])-1)) { for(k=0;k<tptr;k++){if(pro[i][j]==ter[k])col=k;} if(!isupper(pro[i][j+1])) { for(k=0;k<tptr;k++){if(pro[i][j+1]==ter[k])row=k;} opt[col][row][index]='='; } else{ if(isupper(pro[i][j+1])) { if(!isupper(pro[i][j+2])){ for(k=0;k<tptr;k++){if(pro[i][j+2]==ter[k])row=k;} opt[col][row][index]='='; break; } } } } break; }} for(i=0;i<n;i++) { for(j=3;j<strlen(pro[i]);j++) { if(isupper(pro[i][j])) { for(k=0;k<inc;k++){if(pro[i][j]==nt[k]){in=k;}} if(!isupper(pro[i][j+1])) { for(k=0;k<tptr;k++){ if(pro[i][j+1]==ter[k]){row=k;}} for(k=0;k<strlen(trail[in]);k++) { for(l=0;l<tptr;l++){if(trail[in][k]==ter[l]){col=l;}} opt[col][row][index]='>'; } } } }} for(i=0;i<n;i++) { for(j=3;j<strlen(pro[i]);j++) { if(!isupper(pro[i][j])) { for(k=0;k<tptr;k++){if(pro[i][j]==ter[k]){col=k;}} if(isupper(pro[i][j+1])) { for(k=0;k<inc;k++){if(pro[i][j+1]==nt[k]){in=k;}} for(k=0;k<strlen(lead[in]);k++) { for(l=0;l<tptr;l++){if(lead[in][k]==ter[l]){row=l;}} opt[col][row][index]='<'; } } } }} printf("\n\nOPERATOR PRECEDENCE TABLE:\n"); for(i=0;i<tptr;i++) { printf("\t%c",ter[i]); } printf("\n\n"); for(i=0;i<tptr;i++) { printf("\n\n%c",ter[i]); for(j=0;j<tptr;j++) { if(opt[i][j][0]==NULL){opt[i][j][0]='-';} printf("\t%c",opt[i][j][0]); } } getch(); } |
Friday, August 27, 2010
OPERATOR PRECEDENCE TABLE
Subscribe to:
Post Comments (Atom)
titanium tube -Baojititanium.blogspot.com
ReplyDeleteI titanium white fennec do not hold any other casino titanium trim reviews card, as I have nothing with titanium tubing playing columbia titanium boots it, and I just trex titanium headphones want to play it.