Exp 5
Exp 5
h>
#include<string.h>
#include<conio.h>
int count=1,i=0,j=0,l=0,findval=0,k=0,kflag=0;
char key[4][12]= {"int","float","char","double"};
char dstr[100][100],estr[100][100];
char token[100],resultvardt[100],arg1dt[100],arg2dt[100];
void entry();
int check(char[]);
int search(char[]);
void typecheck();
struct table { char var[10]; char dt[10]; };
struct table tbl[20];
void main()
{
clrscr();
printf("\n IMPLEMENTATION OF TYPE CHECKING \n");
i=0;
printf("\n SEMANTIC ANALYZER(TYPE CHECKING): \n");
while(strcmp(dstr[i],"END"))
{} l=0;
entry();
printf("\n"); i++; while(strcmp(estr[l],"END"))
{
typecheck( );
printf("\n") ;
l++;
}
} else
{
}
strcpy(tbl[count].var,token);
}
else
{
}
kflag=0;
count++;
void typecheck()
{
memset(token,0,strlen(token));
j=0;
k=0;
while(estr[l ][j]!='=')
{
token[k]=estr[l][j ];
k++;
j++;
}
findval=search(toke n);
if(findval>0)
{
} else
{
}
k=0 ;
strcpy(resultvardt,tbl[findval].dt);
findval=0;
printf("Undefined Variable\n");
memset(token,0,strlen(token));
j++;
while(((estr[l][j]!='+')&&(estr[l][j]!='-')&&(estr[l][j]!='*')&&(estr[l][j]!='/')))
{
token[k]=estr[l][j ];
k++;
j++;
}
findval=search(toke n);
if(findval>0)
{
} else
{
}
k=0 ;
strcpy(arg1dt,tbl[findval].dt);
findval=0;
printf("Undefined Variable\n");
memset(token,0,strlen(token));
j++;
while(estr[l][j]!=';')
{
token[k]=estr[l][j ];
k++;
j++;
}
findval=search(toke n);
if(findval>0)
{
} else
{
}
strcpy(arg2dt,tbl[findval].dt);
findval=0;
printf("Undefined Variable\n");
if(!strcmp(arg1dt,arg2dt))
{
if(!strcmp(resultvardt,arg1dt))
{
} else
{
} else
{
}
printf("\tThere is no type mismatch in the expression %s ",estr[l]);