Tuesday, November 6, 2007

Symbol Table

Program : Symbol Table



#include<stdio.h>

#include<conio.h>

#include<process.h>


struct table

{

char tab[2];

char label[20];

char ins[20];

char exp[20];

}obj[20];


struct symtab //structure for storing symtab variables

{

char name[9];

int add;

}sym[25];


char array[9],num[9];

int temp,sign=0,ln,tmp,loc;

int z,i,j,t,c,k,no,s,value,pos;


void main() //main function

{

char ch,str[20];

FILE *ptr1;

ptr1=fopen("code.txt","r");

clrscr();


if(!ptr1)

{

printf("FIle not found:");

getch();

exit(0);

}

c=i=0;


while((ch=getc(ptr1))!=EOF)

{

if(ch=='\t')

{

obj[c].tab[0]=NULL;

ch=getc(ptr1);

}


while(ch!='\t')

{

obj[c].tab[i]=ch;

ch=getc(ptr1);

i++;

}

i=0;


while(ch!='\t')

{

obj[c].label[i]=ch;

ch=getc(ptr1);

i++;

}

ch=getc(ptr1);

j=0;


while(ch!='\t')

{

obj[c].ins[j]=ch;

j++;

ch=getc(ptr1);

}

k=0,t=0;

ch=getc(ptr1);


while(ch!='\n')

{

if(isdigit(ch))

{

obj[c].exp[t]=ch;

ch=getc(ptr1);

t++;

}

else

{

obj[c].exp[t]=ch;

ch=getc(ptr1);

t++;

}

}

c++;

}



printf("\n\tSOURCE PROGRAM\n\t*---------------*\n");


for(t=0;t<=c;t++)

{

printf("\n%s\t%s\t%s\n",obj[t].tab,obj[t].ins,obj[t].exp);


}


printf("\n\t SYMBOL TABLE \n\t*-------------------*\n");

value=c;

s=0;



while(s<=value)

{

if((strcmp(obj[s].ins,"START"))==0)

{

sym[s+1].add=atoi(obj[s].exp);

sym[s].add=sym[s+1].add;

loc=sym[s].add;

}



else if((strcmp(obj[s].ins,"STOP"))==0)

{

sym[s+1].add=loc+1;

loc=loc+1;

}



else if((strcmp(obj[s].ins,"DS"))==0)

{

sym[s+1].add=loc+atoi(obj[s].exp);

loc=loc+atoi(obj[s].exp);

}



else if((strcmp(obj[s].ins,"MOVER"))==0)

{

sym[s+1].add=loc+1;

loc=loc+1;

}



else if((strcmp(obj[s].ins,"DC"))==0)

{

sym[s+1].add=loc+1;

loc=loc+1;

}



else if((strcmp(obj[s].ins,"ADD"))==0)

{

sym[s+1].add=loc+1;

loc=loc+1;

}


else if((strcmp(obj[s].ins,"MOVEM"))==0)

{

sym[s+1].add=loc+1;

loc=loc+1;

}


else if((strcmp(obj[s].ins,"PRINT"))==0)

{

sym[s+1].add=loc+1;

loc=loc+1;

}


else if((strcmp(obj[s].ins,"EQU"))==0)

{


for(z=0;z<strlen(obj[s].exp);z++)

{

if(obj[s].exp[z]=='+')

{

pos=z;

sign=1;

ln=s;

goto lab;

}

else if(obj[s].exp[z]=='-')

{

pos=z;

sign=2;

ln=s;

goto lab;

}

} //end of for



lab:


if(sign==1)

{

t=0;


for(i=0;i<pos;i++)

{

array[i]=obj[ln].exp[i];

}


for(j=pos+1;j<strlen(obj[ln].exp);j++)

{

num[t]=obj[ln].exp[j];

t++;


}

tmp=atoi(num);


for(i=0;i<=c;i++)

{

if(strcmp(array,obj[i].tab)==0)

{


sym[s].add=sym[i].add+tmp;

sym[s+1].add=sym[s-1].add+1;

break;

}


} //end of for

} //end of else if sign =1



else if(sign==2)

{

t=0;

for(i=0;i<pos;i++)

{

array[i]=obj[ln].exp[i];

}

for(j=pos+1;j<strlen(obj[ln].exp);j++)

{

num[t]=obj[ln].exp[j];

}

tmp=atoi(num);

for(i=0;i<=c;i++)

{

if(strcmp(array,obj[i].tab)==0)

{

if(obj[s].ins[0]=='O')

{

sym[s+1].add=sym[s].add+1;

}

else

{

sym[s].add=sym[i].add-tmp;

sym[s+1].add=sym[s-1].add+1;

}

break;

}


} //end of for

} //end of else if sign =2

}

else if((strcmp(obj[s].ins,"ORIGIN"))==0)

{

for(z=0;z<strlen(obj[s].exp);z++)

{

if(obj[s].exp[z]=='+')

{

pos=z;

sign=1;

ln=s;

goto lab1;

}



else if(obj[s].exp[z]=='-')

{

pos=z;

sign=2;

ln=s;

goto lab1;

}

} //end of for

lab1:

if(sign==1)

{

t=0;

for(i=0;i<pos;i++)

{

array[i]=obj[ln].exp[i];

}



for(j=pos+1;j<strlen(obj[ln].exp);j++)

{

num[t]=obj[ln].exp[j];

t++;


}

tmp=atoi(num);


for(i=0;i<=c;i++)

{

if(strcmp(array,obj[i].tab)==0)

{

loc=sym[i].add+tmp;

sym[s+1].add=loc;

break;

}

} //end of for

} //end of else if sign =1

else if(sign==2)

{

t=0;



for(i=0;i<pos;i++)

{

array[i]=obj[ln].exp[i];

}

for(j=pos+1;j<strlen(obj[ln].exp);j++)

{

num[t]=obj[ln].exp[j];

}

tmp=atoi(num);

for(i=0;i<=c;i++)

{

if(strcmp(array,obj[i].tab)==0)

{

loc=sym[s].add=sym[i].add-tmp;

sym[s+1].add=loc;

break;

}


} //end of for

} //end of else if sign =2

}



if(strcmp(obj[s].tab,NULL)!=0)

printf("\n\t%s\t%d",obj[s].tab,sym[s].add);

s=s+1;

} //end of for s

fclose(ptr1);

getch();


} //end of main function


String Checking

Program : String Checking



#include<stdio.h>

#include<conio.h>


void main()

{

int i,y,x,l;

char a[20]; //the input string is stored in this character array

clrscr();

printf("String to be checked\n");

gets(a); //get the input string

l=strlen(a); //calculate the length of the string



if(a[l-3]=='a'&&a[l-2]=='b'&&a[l-1]=='c')

x=1;



else

x=0;



for(i=1;i<=l-3;i++)

{

if(a[i]=='a'||a[i]=='b')

y=1;

else

break;

}



if((x==1)&&(y==1))

printf("String accepted"); //output statement



else

printf("String not accepted\n");

getch();

}


S R Parser

Program : S R Parser



#include<stdio.h>

#include<process.h>

#include<conio.h>

#include<string.h>


void main() //main function

{

int i,j,len;

char str[20],sta[20];

int k;

clrscr();

printf("\nEnter the string:\t");

gets(str);

len=strlen(str); //get string length

j=0;



for(i=0;i<len;i++)

{

printf("\n%s",sta);



if(str[i]=='a')

{

sta[j]='E';

j++; //increment stack pointer

printf("\n%s",sta);


if((sta[j-2]=='+')||(sta[j-2]=='-')||(sta[j-2]=='*')||(sta[j-2]=='/'))

{

if(sta[j-3]=='E')

{

sta[j-2]=' ';

sta[j-1]=' ';

j=j-2; //decrement stack pointer by 2

}


else

{

if(j>2)

{

printf("\nSTRING NOT ACCEPTED");

getch();

exit(0);

}

}

}


else if(sta[j-2]=='E')

{

printf("\nSTRING NOT ACCEPTED");

getch();

exit(0);

}


else

{

if(j>2)

{

printf("\nSTRING NOT ACCEPTED");

getch();

exit(0);


}

}


} //end of if(id)


else if(str[i]=='+')

{

sta[j]='+';

j++; //increment stack pointer


}


else if(str[i]=='-')

{

sta[j]='-';

j++; //increment stack pointer


}


else if(str[i]=='/')

{

sta[j]='/';

j++; //increment stack pointer


}


else if(str[i]=='*')

{

sta[j]='*';

j++; //increment stack pointer


}

} //end of for loop


printf("\nE\nSTRING ACCEPTED");

getch();

} //end of main function

Operator Precedence Parser

Program : Operator Precedence Parser



#include<stdio.h>

#include<conio.h>

#include<string.h>


void main() //main function

{

int i,j=0,count=0,n,s,k,d=0,f,loc=0,stlen=0,mj=0;

char st[10],in[20],stack[10];

clrscr();

printf("ENTER THE LANGUAGE TO BE REDUCED\n");

gets(in); //get the input language

n=strlen(in); //get string length


for(i=0;i<n;i++) //until end of string

{

if(in[i]==' ')

break;

else if(in[i]=='+'||in[i]=='-'||in[i]=='*'||in[i]=='/')

{

stack[j]=in[i];

st[d]=in[i];

j++;

d++;

}


else if(in[i]=='i')

{

stack[j]='E';

j++;

}

}

st[d]='\0';

stlen=d;

stack[j]='\0';

puts(stack);

puts(st);

i=0;

j=0;


while(st[i]!=' ')

{

count=0;

if(st[i]=='+'||st[i]=='-')

{

while(st[j]!=' ')

{

if(st[j]=='*'||st[j]=='/')

{

count++;

loc=j;

break;

}



else

{

j++;

}

}



if(count!=0)

{

st[j]=' ';

j=(2*(loc+1))-1;



for(mj=loc;mj<stlen;mj++)

{

st[mj]=st[mj+1];

}

stlen--;



for(mj=j;mj<strlen(stack);mj++)

{

stack[mj]=stack[mj+2];

stack[mj+1]=stack[mj+3];

}



puts(stack);

puts(st);

}

else

{

st[i]=' ';

j=((2*(i+1))-1);



for(mj=i;mj<stlen;mj++)

{

st[mj]=st[mj+1];

}

stlen--;


for(mj=j;mj<strlen(stack);mj++)

{

stack[mj]=stack[mj+2];

stack[mj+1]=stack[mj+3];

}

puts(stack);

}

}



else if(st[i]=='*'||st[i]=='/')

{


while(st[j]!=' ')

{

if(st[j]=='*'||st[j]=='/')

{

j++;

}

else break;

}

st[j]=' ';

j=0;


while(st[j]!=' ')

{

if(st[j]=='*'||st[j]=='/')

{

j++;

}

else break;

}


stack[j]=stack[j+2];

stack[j+1]=stack[j+3];

puts(stack);

}

}

puts(stack);

getch();

} //end of main function

Left Recursion

Program : Left Recursion



#include<stdio.h>

#include<conio.h>

#include<string.h>


void main() //main function

{

char pro[20],alph[10],beta[10];

int i,len,u,pos;

clrscr();

printf("Enter the production\t");

gets(pro); //get the input production

len=strlen(pro); //find length of production

pos=3;

u=0;



if(pro[0]!=pro[2]) //check production is non left recursive

{

printf("\nProduction is not left recursive\n");


}



else //if production is left recursive

{

printf("\nProduction is left recursive\n");



for(i=3;i<=len;i++) //converting to non left recursive production

{

if(pro[i]!='|')

{

alph[u]=pro[i];

u++;

pos++;

}

else

{

break;

}

alph[u]='\0';

}

pos++;

u=0;



for(i=pos;i<=len;i++)

{

beta[u]=pro[i];

u++;

}





beta[u]='\0';


printf("\n\nEquivalent non left recursive grammar is:\n");


printf("\n%c=%s%c'\n",pro[0],beta,pro[0]);


printf("\n%c'=%s%c'|e\n",pro[0],alph,pro[0]);


}



getch();

}


Lexical Analyzer

Program : Lexical Analyzer



#include<stdio.h>

#include<conio.h>

#include<stdlib.h>


void main() //main function

{

FILE *p;

int i=0,j=0,k=0,flag;

char x,temp[100];


char digit[10]={'0','1','2','3','4','5','6','7','8','9'};



char key[25][10]={"auto","break","case","char","const","continue",

"default","do","double","else","enum","for",

"goto","if","int","return","signed","static",

"struct","union","while","switch","void","float"};


char opera[10][17]={"+","=","*","/","-",">","<"};


clrscr();

p=fopen("text.txt","r"); //open file

if(p==NULL) //if file not present

printf("cannot open the file");

else

{

printf("\tKEYWORD\tIDENTIFIER\tOPERATOR\n");

while((x=fgetc(p))!=EOF)

{

if((x!=' ')&&(x!='\t')&&(x!='\n')) //get keyword

{

temp[i]=x;

i++;

temp[i]='\0';

}

else

{

for(j=0;j<i;j++)

temp[j]=' ';

i=0;

}

for(k=0;k<25;k++) //compare with key

{

if(strcmp(temp,key[k])==0)

{

printf("\n\t%s",temp);

for(j=0;j<i;j++)

temp[j]=' ';

i=0;

}

}

for(j=0;j<strlen(temp);j++) //check identifiers

{

for(k=0;k<11;k++)

{

flag=0;

if(temp[j]==digit[k])

{

flag=1;

break;

}

}

}

if(flag!=0)

{

printf("\n\t\t%s",temp);

for(j=0;j<i;j++)

temp[j]=' ';

i=0;

}

for(k=0;k<10;k++) //check if operator

{

if(strcmp(temp,opera[k])==0)

{

printf("\n\t\t\t\t%s",temp);

for(j=0;j<i;j++)

temp[j]=' ';

i=0;

}

}

}

}

fclose(p); //close the file

getch();

}


Intermediate Code

Program : Intermediate Code



#include<stdio.h>

#include<conio.h>


struct //structure for generating symbol table

{

char label[15];

char opcode[15];

char operand[15];

}pgm[20];


struct //structure for printing symbol table

{

char label[25];

int addr;

}symtab[20];


struct //structure for temporary usage

{

char label[15];

}samplesym[20];


static char is[40][40]={"stop","add","sub","mult","mover","movem","comp",

"bc","div","read","print"};

static char dl[40][40]={"dc","ds"};

static char ad[40][40]={"start","end","origin","equ","ltorg"};

static char re[40][40]={"areg","breg","creg","dreg"};


void main() //main function

{

FILE *p1;

int n=0,loc=0,j=0,k=0,i=0,s=0,q=0,z1=0,fl=0,i1,ll,z=0,u=0,u1=0,ee,m=0,

int a1=0,w,temp;

char c,f[5],t[5],ff[5],tt[5],mm,q1;

clrscr();

p1=fopen("codes.txt","r");

if(p1==NULL)

printf("\n FILE CANNOT BE OPENED");

else

{

while((c=fgetc(p1))!=EOF)

{

if(c=='\n')

{

n++;

c=fgetc(p1);

}

}

}

fclose(p1);

p1=fopen("codes.txt","r");



if(p1==NULL)

printf("\n FILE CANNOT BE OPENED");



else

{

for(i=0;i<n;i++)

{

j=0;

while((c=fgetc(p1))!='\t')

pgm[i].label[j++]=c;

j=0;

while((c=fgetc(p1))!='\t')

pgm[i].opcode[j++]=c;

j=0;

while((c=fgetc(p1))!='\n')

pgm[i].operand[j++]=c;

}

fclose(p1);

printf("\n INPUT FILE IS:\n\n");

for(i=0;i<n;i++)

{


printf(" %s\t",pgm[i].label);

printf("%s\t",pgm[i].opcode);

printf("%s\t",pgm[i].operand);

printf("\n\n");

}



for(i=0;i<n;i++) //comparing symtab variables

{

if(strcmp(pgm[i].opcode,"start")==0)

loc=atoi(pgm[i].operand);

else if(strcmp(pgm[i].opcode,"ds")==0)

{

ll=atoi(pgm[i].operand);

if(strcmp(pgm[i].label,"no")!=0)

{

strcpy(symtab[k].label,pgm[i].label);

symtab[k].addr=loc;

k++;

}

loc=loc+ll;

}

else if(strcmp(pgm[i].opcode,"equ")==0)

{

s=0;

while(!u1)

{

if(pgm[i].operand[z]=='-')

{

u1=1;

}

else if(pgm[i].operand[z]=='+')

{

u1=1;

}

else

{

u1=0;

f[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

f[u]='\0';

q=pgm[i].operand[z];

z++;

u=0;

while(z<strlen(pgm[i].operand))

{

t[u]=pgm[i].operand[z];

z++;u++;

}

t[u]='\0';

ee=atoi(t);

for(j=0;j<k;j++)

{

if(strcmp(symtab[j].label,f)==0)

{

s=symtab[j].addr;

if(q=='+')

s=s+ee;

else

s=s-ee;

break;


}


}

if(strcmp(pgm[i].label,"no")!=0)

{

strcpy(symtab[k].label,pgm[i].label);

symtab[k].addr=s;

k++;

}

}

else if(strcmp(pgm[i].opcode,"origin")==0)

{

s=0,u1=0,z=0,u=0;

while(!u1)

{

if(pgm[i].operand[z]=='-')

{

u1=1;

}

else if(pgm[i].operand[z]=='+')

{

u1=1;

}

else

{

u1=0;

ff[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

ff[u]='\0';

q=pgm[i].operand[z];

z++; u=0;

while(z<strlen(pgm[i].operand))

{

tt[u]=pgm[i].operand[z];

z++;u++;

}

tt[u]='\0';

ee=atoi(t);

for(j=0;j<k;j++)

{

if(strcmp(symtab[j].label,ff)==0)

{

s=symtab[j].addr;

if(q=='+')

s=s+ee;

else

s=s-ee;

break;

}

}

loc=s;

}

else

{

if(strcmp(pgm[i].label,"no")!=0)

{

strcpy(symtab[k].label,pgm[i].label);

symtab[k].addr=loc;

k++;

loc++;

}

}

}

}


printf("INTERMEDIATE CODE IS\n");


//generation of intermediate code

z=0;

for(j=0;j<=k;j++)

{

if(strcmp(symtab[j].label,"\0")!=0)

{

strcpy(samplesym[z].label,symtab[j].label);

z++; }

}

for(i=0;i<n;i++)

{

if(strcmp(pgm[i].opcode,"start")==0)

{

loc=atoi(pgm[i].operand);

z=0;

for(i1=0;i1<=10;i1++)

{

if(strcmp(ad[i1],"start")==0)

{

z=i1;

break;

}

}

z++;

printf("(ad,0%d) (c,%d)\n",z,loc);

m=m+1;

}

else if(strcmp(pgm[i].opcode,"ds")==0)

{

ll=atoi(pgm[i].operand);

z=0;

for(i1=0;i1<=1;i1++)

{

if(strcmp(dl[i1],"ds")==0)

{

z=i1;

break;

}

}

z=z++;

ll=atoi(pgm[i].operand);

printf("(dl,0%d) (c,%d)\n",z,ll);

m=m+1;

loc=loc+ll;

}

else if(strcmp(pgm[i].opcode,"dc")==0)

{

z=0;

for(i1=0;i1<=1;i1++)

{

if(strcmp(dl[i1],"dc")==0)

{

z=i1;

break;

}

}

z=z++;

printf("(dl,0%d) (%s)\n",z,pgm[i].operand);

}

else if(strcmp(pgm[i].opcode,"equ")==0)

{

s=0,z=0,u1=0;

while(!u1)

{

if(pgm[i].operand[z]=='-')

{

u1=1;

}

else if(pgm[i].operand[z]=='+')

{

u1=1;

}

else

{

u1=0;

f[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

f[u]='\0';

q1=pgm[i].operand[z];

z++;

u=0;

while(z<strlen(pgm[i].operand))

{

t[u]=pgm[i].operand[z];

z++;u++;

}

t[u]='\0';

ee=atoi(t);

for(j=0;j<k;j++)

{

if(strcmp(symtab[j].label,f)==0)

{

s=symtab[j].addr;

if(q1=='+')

s=s+ee;

else

s=s-ee;

break;


}

}

z=0;

for(i1=0;i1<=4;i1++)

{

if(strcmp(ad[i1],"equ")==0)

{

z=i1;

break;

}

}

z=z+1;

w=0;

for(q=0;q<=k;q++)

{

if(strcmp(samplesym[q].label,f)==0)

{

w=q;

break;

}

}

w=w+1;

printf("(ad,0%d) (s,%d)%c%s\n",z,w,q1,t);

m=m+1;

}

else if(strcmp(pgm[i].opcode,"origin")==0)

{

s=0,u1=0,z=0,u=0;

while(!u1)

{

if(pgm[i].operand[z]=='-')

{

u1=1;

}

else if(pgm[i].operand[z]=='+')

{

u1=1;

}

else

{

u1=0;

ff[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

ff[u]='\0';

q1=pgm[i].operand[z];

z++;

u=0;

while(z<strlen(pgm[i].operand))

{

tt[u]=pgm[i].operand[z];

z++;u++;

}

tt[u]='\0';

ee=atoi(t);

for(j=0;j<k;j++)

{

if(strcmp(symtab[j].label,ff)==0)

{

s=symtab[j].addr;

if(q=='+')

s=s+ee;

else

s=s-ee;

break;


}


}

loc=s;

z=0;

for(i1=0;i1<=4;i1++)

{

if(strcmp(ad[i1],"origin")==0)

{

z=i1;

break;

}

}

z=z+1;

w=0;

for(q=0;q<=k;q++)

{

if(strcmp(samplesym[q].label,ff)==0)

{

w=q;

break;

}

}

w=w+1;

printf("(ad,0%d) (s,%d)%c%s\n",z,w,q1,tt);

m=m+1;


}

else if(strcmp(pgm[i].opcode,"mover")==0)

{

z=0;

for(i1=0;i1<=10;i1++)

{

if(strcmp(is[i1],"mover")==0)

{

z=i1;

break;

}

}

temp=z;

w=0,z=0,u1=0,u=0;

while(!u1)

{

if(pgm[i].operand[z]==',')

{

u1=1;

}

else

{

u1=0;

f[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

f[u]='\0';

q1=pgm[i].operand[z];

z++;

u=0;

while(z<strlen(pgm[i].operand))

{

t[u]=pgm[i].operand[z];

z++;u++;

}

t[u]='\0';

for(q=0;q<=k;q++)

{

if(strcmp(re[q],f)==0)

{

fl=q;

break;

}

}

fl++;

a1=0;

for(q=0;q<=k;q++)

{

if(strcmp(samplesym[q].label,t)==0)

{

a1=q;

break;

}

}

a1++;

printf("(is,0%d) (%d)(s,%d)\n",temp,fl,a1);

m=m+1;

loc=loc+1;

}

else if(strcmp(pgm[i].opcode,"add")==0)

{

z1=0;

for(i1=0;i1<=10;i1++)

{

if(strcmp(is[i1],"add")==0)

{

z1=i1;

break;

}

}

z1++;

w=0,z=0,u1=0;

while(!u1)

{

if(pgm[i].operand[z]==',')

{

u1=1;

}

else

{

u1=0;

f[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

f[u]='\0';

//splitting opernds of mover

q1=pgm[i].operand[z];

z++;

u=0;

while(z<strlen(pgm[i].operand))

{

t[u]=pgm[i].operand[z];

z++;u++;

}

t[u]='\0';

z=0;

for(q=0;q<=k;q++)

{

if(strcmp(re[q],f)==0)

{

z=q;

break;

}

}

z=z+1;

for(q=0;q<=k;q++)

{

if(strcmp(samplesym[q].label,t)==0)

{

a1=q;

break;

}

}

a1++;

printf("(is,0%d) (%d)(s,%d)\n",z1,z,a1);

m=m+1;

loc=loc+1;

}

else if(strcmp(pgm[i].opcode,"movem")==0)

{

z=0;

for(i1=0;i1<=10;i1++)

{

if(strcmp(is[i1],"movem")==0)

{

z=i1;

break;

}

}

temp=z;

//splitting opernds of movem

w=0,z=0,u1=0,u=0;

while(!u1)

{

if(pgm[i].operand[z]==',')

{

u1=1;

}

else

{

u1=0;

f[u]=pgm[i].operand[z];

u++;

}

z++;

}

z--;

f[u]='\0';

q1=pgm[i].operand[z];

z++;

u=0;

while(z<strlen(pgm[i].operand))

{

t[u]=pgm[i].operand[z];

z++;u++;

}

t[u]='\0';

for(q=0;q<=k;q++)

{

if(strcmp(re[q],f)==0)

{

fl=q;

break;

}

}

fl++;

for(q=0;q<=k;q++)

{

if(strcmp(samplesym[q].label,t)==0)

{

a1=q;

break;

}

}

a1++;

printf("(is,0%d) (%d)(s,%d)\n",temp,fl,a1);

m=m+1;

loc=loc+1;

}

else if(strcmp(pgm[i].opcode,"print")==0)

{

z=0;

for(i1=0;i1<=10;i1++)

{

if(strcmp(is[i1],"print")==0)

{

z=i1;

break;

}

}

w=0;

for(q=0;q<=k;q++)

{

if(strcmp(samplesym[q].label,pgm[i].operand)==0)

{

w=q;

break;

}

}

w=w+1;

printf("(is,%d) (s,%d)\n",z,w);

m=m+1;

loc=loc+1;

}

else if(strcmp(pgm[i].opcode,"stop")==0)

{

z=0;

for(i1=0;i1<=10;i1++)

{

if(strcmp(ad[i1],"stop")==0)

{

z=i1;

break;

}

}

z++;

printf("(is,0%d)\n",z);

m=m+1;

loc=loc+1;

}

else if(strcmp(pgm[i].opcode,"end")==0)

{

z=0;

for(i1=0;i1<=4;i1++)

{

if(strcmp(ad[i1],"end")==0)

{

z=i1;

break;

}

}

z=z+1;

printf("(ad,0%d)\n",z);

m=m+1;

loc=loc+1;

}

}

getch();

}