3、dio.h>/*#include"plo.h"*/#include"string.h"#definestacksize500typedefenum{false,true}bool;enumobject{procedur,constant,variable};#definenorw13#definetxmax100#definenmax14#defineal10#definelevmax3#definecxmax200#defineamax2047#definesymnum32enumsymbol{nul,ident
4、,number,plus,minus,times,slash,oddsym,eql,neq,lss,leq,gtr,geq,lparen,rparen,comma,semicolon,period,becomes,beginsym,endsym,ifsym,thensym,whilesym,writesym,readsym,dosym,callsym,constsym,varsym,procsym,};enumfct{lit,opr,lod,sto,cal,inte,jmp,jpc,};#definefctnum8
5、structinstruction{enumfctf;intl;inta;};FILE*fas;FILE*fa;FILE*fal;FILE*fa2;boollistswitch;booltableswitch;charch;enumsymbolsym;charid[al+1];intnum;intcc,ll;intcx;charline[81];chara[al+1];intnum;intcc,ll;intcx;charline[81];chara[al+1];structinstructioncode[cxmax
6、];charword[norw][al];structinstructioncode[cxmax];charword[norw][al];enumsymbolwsym[norw];enumsymbolssym[256];charmnemonic[fctnum][5];booldeclbegsys[symnum];boolstatbegsys[symnum];boolfacbegsys[symnum];boolfacstatbegsys[symnum];structtablestruct{charname[al];e
7、numobjectkind;intval;intlevel;intadr;intsize;};structtablestructtable[txmax];FILE*fin;FILE*fout;charfname[al];interr;#definegetsymdoif(-1==getsym())return-1#definegetchdoif(-1==getch())return-1#definetestdo(a,b,c)if(-1==test(a,b,c))return-1#definegendo(a,b,c)i
8、f(-1==gen(a,b,c))return-1#defineexpressiondo(a,b,c)if(-1==expression(a,b,c))return-1#definefactordo(a,b,c)if(-1==factor(a,b,c))return-1#definetermdo(a,b,c)if(-1==term(a,b,c))return