📄 destoasm.java
字号:
package CWord;import java.util.*;import java.io.*;/** * * @author jjl Date 2009.1.4 10:30~`~2009 1.4 21:49 */public class DesToASM { Vector vNum=new Vector(); int pNumId=0; Vector vUsr=new Vector(); int pUsrId=0; StringBuffer strDes=new StringBuffer(); StringBuffer strInt=new StringBuffer(); StringBuffer strCode=new StringBuffer(); static int preId=0; listen l=new listen(); static int Row=0; public DesToASM(){ l.clearMessage(); } public void inputDesWord(StringBuffer strDes,Vector vNum,Vector vUsr){ this.vNum=vNum; this.vUsr=vUsr; this.strDes=strDes; if(!invalidDesWord()){ l.addMessage("The Input Have errors ,please input again!"); return; } } protected Boolean invalidDesWord(){//test the content of C word Deal l.addMessage("Now Strat invalid the user word!"); if(strDes.length()<1||vNum.size()<1||vUsr.size()<1){ return false; } l.addMessage("the input C deal Word is true!"); return true; } char main0='0',int0='1',while0='2', if0='3',for0='4',do0='5',else0='6'; char nequ='n',equ='e',beq='b',gqu='g',dad='d',dam='a'; char usr='u',num='m'; char Sym; Hashtable vUsrTable=new Hashtable();//the user definition table Vector vUsrElet=new Vector();//the element of the user definition table //{name ,type,value} public void dealCGrm(){ l.addMessage("Start Check The Grammer"); if(!invalidDesWord()){ l.addMessage("input the cword desstr error! please try again!"); return ; } Sym=strDes.charAt(0); start(); l.addMessage("testSuccessfully!"); } protected void getTheCons(char Sym){ switch(Sym){ case '0': // l.addMessage("Get The main " ); return ; case '1': // l.addMessage("Get The int "); return ; case '2': // l.addMessage("Get The while "); return ; case '3': // l.addMessage("Get The if"); return ; case '4': // l.addMessage("Get The for "); return ; case '5': // l.addMessage("Get The do "); return ; case '6': //// l.addMessage("Get The else"); return; default: // l.addMessage("Get the split"+Sym); return ; } } protected char getNextWord(){ preId=preId+1; if(preId>=strDes.length()){ StringBuffer s1=new StringBuffer(); s1.append("Data Segment\n"); this.otFile(s1); this.otFile(strInt); StringBuffer s2=new StringBuffer(); s2.append("Data Ends\n"); s2.append("code segment\n"+ "assume cs:code,ds:Data\n"+"start:\n"); this.otFile(s2); this.otFile(strCode); StringBuffer s3=new StringBuffer(); s3.append("Code Ends\n"+"end start\n"); this.otFile(s3); l.addMessage("deal Grammer successfully!"); dealerror(); } if(strDes.charAt(preId)=='#'){ Row++;//row count return getNextWord(); } if(strDes.charAt(preId)=='-'){ preId++; if(strDes.charAt(preId)=='-'){ preId--; // l.addMessage("get a minus!"); return '-'; } switch(strDes.charAt(preId)){ case '1': // l.addMessage("Get The Usr Word"); return usr; case '2': // l.addMessage("Get The number "); return num; case '3': // l.addMessage("Get The not equ "); return nequ; case '4': // l.addMessage("Get The equ "); return equ; case '5': // l.addMessage("Get The below equal "); return beq; case '6': // l.addMessage("Get The greater equal "); return gqu; case '7':return dad; case '8':return dam; default: return '?'; } } else{ getTheCons(Sym); return strDes.charAt(preId); } } protected char getCurWord(){ if(strDes.charAt(preId)=='-'){ preId++; switch(strDes.charAt(preId)){ case '1':return usr; case '2':return num; case '3':return nequ; case '4':return equ; case '5':return beq; case '6':return gqu; case '7':return dad; case '8':return dam; default: return '?'; } } else{ return strDes.charAt(preId); } } protected void start(){ if(Sym==main0){ Sym=getNextWord(); if(Sym=='('){ Sym=getNextWord(); if(Sym==')'){ Sym=getNextWord(); if(Sym=='{'){ Sym=getNextWord(); dealIntroduction(); if(Sym==';'){ Sym=getNextWord(); dealFlowStam(); if(Sym=='}'){ Sym=getNextWord(); return; } else{ l.addMessage("less a } error at row"+Row); dealerror(); } } else{ l.addMessage("less ; error at row"+Row); dealerror(); } } else{ l.addMessage("less a { error at row"+Row); dealerror(); } } else{ l.addMessage("less a ) error at row"+Row); dealerror(); } } else{ l.addMessage("less a ( error ar row"+Row); dealerror(); } }else{ l.addMessage("not main start error at row "+Row); dealerror(); } } protected Boolean dealBlock(){ // l.addMessage("Start To Anaysics<> !"); if(!dealIfStam()){ // l.addMessage("not a start to deal!"); if(!dealCal()){ // l.addMessage("not a <鐠у
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -