/*
// Source file (*m_source)
MACRO ## ## ##
INCR &ARG1 &ARG2 &ARG3
A 1, &ARG1 ##
A 2, &ARG2 ##
A 3, &ARG3 ##
MEND ## ## ##
MACRO ## ## ##
AMIT &ARG1 &ARG2 &ARG3
B 1, &ARG1 ##
B 2, &ARG2 ##
B 3, &ARG3 ##
MEND ## ## ##
INCR DATA1, DATA2, DATA3
AMIT DATA3, DATA2, DATA1
*/
#include<stdio.h>
#include<string.h>
char col1[30],col2[30],col3[30],col4[30];
char ala_col1[30],ala_col2[30];
int i,mdtc=1,mntc=1,ala_cnt=1,j,p_flag1=0,p_flag2=0,p_flag3=0;
FILE *m_source,*m_mnt,*m_mdt,*ala;
int main()
{
remove("m_mdt.txt");
remove("macro_mnt.txt");
remove("m_ala.txt");
// To read the source code and simply display it
m_source=fopen("macro_def.txt","r");
for(i=0;i<14;i++)
{
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
printf("\n %s\t%s\t%s\t%s",col1,col2,col3,col4);
}
fclose(m_source);
m_source=fopen("macro_def.txt","r");
for(i=0;i<14;i++)
{
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
if((strcmp(col1,"MACRO"))==0)
{
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
i++;
// Write a macro name to macro name table
m_mnt=fopen("macro_mnt.txt","a");
{
fprintf(m_mnt,"\n%s\t%d",col1,mdtc);
}
fclose(m_mnt);
mntc++;
// Check whether the arguments already exists or not; if not, then make the entry of it into ALA
// Source file (*m_source)
MACRO ## ## ##
INCR &ARG1 &ARG2 &ARG3
A 1, &ARG1 ##
A 2, &ARG2 ##
A 3, &ARG3 ##
MEND ## ## ##
MACRO ## ## ##
AMIT &ARG1 &ARG2 &ARG3
B 1, &ARG1 ##
B 2, &ARG2 ##
B 3, &ARG3 ##
MEND ## ## ##
INCR DATA1, DATA2, DATA3
AMIT DATA3, DATA2, DATA1
*/
#include<stdio.h>
#include<string.h>
char col1[30],col2[30],col3[30],col4[30];
char ala_col1[30],ala_col2[30];
int i,mdtc=1,mntc=1,ala_cnt=1,j,p_flag1=0,p_flag2=0,p_flag3=0;
FILE *m_source,*m_mnt,*m_mdt,*ala;
int main()
{
remove("m_mdt.txt");
remove("macro_mnt.txt");
remove("m_ala.txt");
// To read the source code and simply display it
m_source=fopen("macro_def.txt","r");
for(i=0;i<14;i++)
{
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
printf("\n %s\t%s\t%s\t%s",col1,col2,col3,col4);
}
fclose(m_source);
m_source=fopen("macro_def.txt","r");
for(i=0;i<14;i++)
{
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
if((strcmp(col1,"MACRO"))==0)
{
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
i++;
// Write a macro name to macro name table
m_mnt=fopen("macro_mnt.txt","a");
{
fprintf(m_mnt,"\n%s\t%d",col1,mdtc);
}
fclose(m_mnt);
mntc++;
// Check whether the arguments already exists or not; if not, then make the entry of it into ALA
ala=fopen("m_ala.txt","r");
if(ala != NULL)
{
for(j=1;j<=3;j++)
{
fscanf(ala,"%s %s",ala_col1,ala_col2);
if((strcmp(col2,ala_col2))==0)
{
p_flag1=1;
}
if((strcmp(col3,ala_col2))==0)
{
p_flag2=1;
}
if((strcmp(col4,ala_col2))==0)
{
p_flag3=1;
}
}
fclose(ala);
}
// Prepare Argument List Array
ala=fopen("m_ala.txt","a");
{
if (p_flag1==0)
{
if((strcmp(col2,"##"))!=0)
{
fprintf(ala,"\n%d\t%s",ala_cnt,col2);
ala_cnt++;
}
}
if (p_flag2==0)
{
if((strcmp(col3,"##"))!=0)
{
fprintf(ala,"\n%d\t%s",ala_cnt,col3);
ala_cnt++;
}
}
if (p_flag3==0)
{
printf("col4 = %s",col4);
if((strcmp(col4,"##"))!=0)
{
fprintf(ala,"\n%d\t%s",ala_cnt,col4);
ala_cnt++;
}
}
}
fclose(ala);
// To write into Macro Definition Table
m_mdt=fopen("m_mdt.txt","a");
fprintf(m_mdt,"\n%d\t%s\t%s\t%s\t%s",mdtc,col1,col2,col3,col4);
fclose(m_mdt);
mdtc++;
back:
// To substitute index notation for arguments
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
i++;
// Find index number
ala=fopen("m_ala.txt","r");
for(j=1;j<=(ala_cnt-1);j++)
{
fscanf(ala,"%s %s",ala_col1,ala_col2);
if ((strcmp(col3,ala_col2))==0)
{
m_mdt=fopen("m_mdt.txt","a");
fprintf(m_mdt,"\n%d\t%s\t%s\t%s\t%s",mdtc,col1,col2,ala_col1,col4);
fclose(m_mdt);
}
}
fclose(ala);
if ((strcmp(col1,"MEND"))==0)
{
m_mdt=fopen("m_mdt.txt","a");
fprintf(m_mdt,"\n%d\t%s\t%s\t%s\t%s",mdtc,col1,col2,col3,col4);
fclose(m_mdt);
mdtc++;
}
else
{
mdtc++;
goto back;
}
}
}
fclose(m_source);
return 0;
}
{
p_flag1=1;
}
if((strcmp(col3,ala_col2))==0)
{
p_flag2=1;
}
if((strcmp(col4,ala_col2))==0)
{
p_flag3=1;
}
}
fclose(ala);
}
// Prepare Argument List Array
ala=fopen("m_ala.txt","a");
{
if (p_flag1==0)
{
if((strcmp(col2,"##"))!=0)
{
fprintf(ala,"\n%d\t%s",ala_cnt,col2);
ala_cnt++;
}
}
if (p_flag2==0)
{
if((strcmp(col3,"##"))!=0)
{
fprintf(ala,"\n%d\t%s",ala_cnt,col3);
ala_cnt++;
}
}
if (p_flag3==0)
{
printf("col4 = %s",col4);
if((strcmp(col4,"##"))!=0)
{
fprintf(ala,"\n%d\t%s",ala_cnt,col4);
ala_cnt++;
}
}
}
fclose(ala);
// To write into Macro Definition Table
m_mdt=fopen("m_mdt.txt","a");
fprintf(m_mdt,"\n%d\t%s\t%s\t%s\t%s",mdtc,col1,col2,col3,col4);
fclose(m_mdt);
mdtc++;
back:
// To substitute index notation for arguments
fscanf(m_source,"%s %s %s %s",col1,col2,col3,col4);
i++;
// Find index number
ala=fopen("m_ala.txt","r");
for(j=1;j<=(ala_cnt-1);j++)
{
fscanf(ala,"%s %s",ala_col1,ala_col2);
if ((strcmp(col3,ala_col2))==0)
{
m_mdt=fopen("m_mdt.txt","a");
fprintf(m_mdt,"\n%d\t%s\t%s\t%s\t%s",mdtc,col1,col2,ala_col1,col4);
fclose(m_mdt);
}
}
fclose(ala);
if ((strcmp(col1,"MEND"))==0)
{
m_mdt=fopen("m_mdt.txt","a");
fprintf(m_mdt,"\n%d\t%s\t%s\t%s\t%s",mdtc,col1,col2,col3,col4);
fclose(m_mdt);
mdtc++;
}
else
{
mdtc++;
goto back;
}
}
}
fclose(m_source);
return 0;
}
Comments
Post a Comment