PL0编译系统C版本

PL0编译系统C版本

ID:40564839

大小:120.50 KB

页数:24页

时间:2019-08-04

PL0编译系统C版本_第1页
PL0编译系统C版本_第2页
PL0编译系统C版本_第3页
PL0编译系统C版本_第4页
PL0编译系统C版本_第5页
资源描述:

《PL0编译系统C版本》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/*PL/0编译系统C版本头文件pl0.h*/typedefenum{false,true}bool;#definenorw13/*关键字个数*/#definetxmax100/*名字表容量*/#definenmax14/*number的最大位数*/#defineal10/*符号的最大长度*/#defineamax2047/*地址上界*/#definelevmax3/*最大允许过程嵌套声明层数[0,levmax]*/#definecxmax200/*最多的虚拟机代码数*/enumsymbol{nul,ident,n

2、umber,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};#definesymnum32/*名字表中的类型*/enumobject{constant,variable,proce

3、dur,array};/*虚拟机代码*/enumfct{lit,opr,lod,sto,cal,inte,jmp,jpc};#definefctnum8/*虚拟机代码结构*/structinstruction{enumfctf;intl;inta;};FILE*fas;FILE*fa;FILE*fa1;FILE*fa2;boollistswitch;booltableswitch;charch;enumsymbolsym;charid[al+1];intnum;intcc,ll;intcx;charline[81]

4、;chara[al+1];structinstructioncode[cxmax];charword[norw][al];enumsymbolwsym[norw];enumsymbolssym[256];charmnemonic[fctnum][5];booldeclbegsys[symnum];boolstatbegsys[symnum];boolfacbegsys[symnum];/*名字表结构*/structtablestruct{charname[al];enumobjectkind;intval;intl

5、evel;intadr;intsize;};structtablestructtable[txmax];FILE*fin;FILE*fout;charfname[al];interr;/*当函数中会发生fatalerror时,返回-1告知调用它的函数,最终退出程序*/#definegetsymdoif(-1==getsym())return-1#definegetchdoif(-1==getch())return-1#definetestdo(a,b,c)if(-1==test(a,b,c))return-1#de

6、finegendo(a,b,c)if(-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-1#defineconditiondo(a,b,c)if(-1==condition(a,b,c))return-1#def

7、inestatementdo(a,b,c)if(-1==statement(a,b,c))return-1#defineconstdeclarationdo(a,b,c)if(-1==constdeclaration(a,b,c))return-1#definevardeclarationdo(a,b,c)if(-1==vardeclaration(a,b,c))return-1voiderror(intn);intgetsym();intgetch();voidinit();intgen(enumfctx,int

8、y,intz);inttest(bool*s1,bool*s2,intn);intinset(inte,bool*s);intaddset(bool*sr,bool*s1,bool*s2,intn);intsubset(bool*sr,bool*s1,bool*s2,intn);intmulset(bool*sr,bool*s1,bool*s2,intn);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。