Friday, August 27, 2010

OPERATOR PRECEDENCE TABLE


/*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();
}




1 comment:

  1. titanium tube -Baojititanium.blogspot.com
    I 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.

    ReplyDelete

Previous Post Next Post Home