Macro Pass1!
Macro Pass1!
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
pntab.put(keywordParam[0].substring(1,keywordParam[0].length()),paramNo++);
if(keywordParam.length==2)
f4.write(keywordParam[0].substring(1,keywordParam[0].length())+"\t"+keywordParam[1]+"\
n");
else
f4.write(keywordParam[0].substring(1,keywordParam[0].length())+"\t"+"-"+"\n");
}
else{
pntab.put(params[i].substring(1,params[i].length()),paramNo++);
pp++;
}
}
f2.write(word[1]+"\t"+pp+"\t"+kp+"\t"+mdtp+"\t"+(kp==0?kpdtp:
(kpdtp+1))+"\n");
kpdtp+=kp;
}
else if(word[0].compareToIgnoreCase("MEND")==0){
f3.write(s+'\n');
flag=pp=kp=0;
mdtp++;
paramNo=1;
pntab.clear();
}
else if(flag==1){
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='&'){
i++;
String temp="";
while(!(s.charAt(i)==' '||s.charAt(i)==',')){
temp+=s.charAt(i++);
if(i==s.length())
break;
}
i--;
f3.write("#"+pntab.get(temp));
}
else
f3.write(s.charAt(i));
}
f3.write("\n");
mdtp++;
}
else{
f1.write(s+'\n');
}
}
b1.close();
f1.close();
f2.close();
f3.close();
f4.close();
}
}
/*
OUTPUT:
Input.txt
MACRO
ADDITION
&arg1,&arg2,&arg3
MOV ax,&arg1
ADD ax,&arg2
ADD ax,&arg3
MEND
ADDITION 34,45,44
END
mnt.txt
Macro Name | No. of Parameters | No. of Keyword Parameters | MDT Pointer | KPDT Pointer
ADDITION |3 |0 |1 |-
mdt.txt
ALA
Macro Name | Formal Parameters
------------|-------------------
ADDITION | arg1, arg2, arg3
intermediate.txt
MACRO
ADDITION
&arg1,&arg2,&arg3
MOV ax,&arg1
ADD ax,&arg2
ADD ax,&arg3
MEND
ADDITION 34,45,44
END