ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:24.15KB ,
资源ID:16735441      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16735441.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理PL0编译程序源代码Word下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理PL0编译程序源代码Word下载.docx

1、|fname0=Y printf(是否将符号表写入文件?/是否输出符号表 tableswitch=(fname0= init();/初始化 err=0; cc=cx=ll=0; ch= ; if(-1!=getsym() fa=fopen(虚拟代码.txt fas=fopen(符号表.txt addset(nxtlev,declbegsys,statbegsys,symnum); nxtlevperiod=true; if(-1=block(0,0,nxtlev)/调用编译程序 fclose(fa); fclose(fa1); fclose(fas); fclose(fin); return

2、0; if(sym!=period) error(9);/结尾丢失了句号 if(err!=0) printf(pl0源程序出现错误,退出编译请从第一个错误处开始修改.nn fprintf(cifa,源程序出现错误,请检查 fprintf(fa1, fprintf(fa, fprintf(fas, fclose(fa); fclose(fa1); fclose(fin); elseCant open file!n fclose(cifa);/printf( return 0;void init()/初始化 int i; for(i=0;ia&chz)/以字母开头的为保留字或者标识符 k=0,l=

3、1; do if(k|ch09 ak=0;/末尾存零 strcpy(id,a); i=0; j=norw-1; do/开始折半查找 k=(i+j)/2; if(strcmp(id,wordk) i=k+1; while(ij)/找到 即为保留字 sym=wsymk; fprintf(cifa,%stt%ssymn,id,id); else/否则为标识符或数字 sym=ident;%sttidentn,id); else if(ch) k=0; num=0; sym=number; do num=10*num+ch-/数字的数位处理 getchdo; while(ch k-; if(knmax)

4、/数字的长度限制0ttnumbern num=0; error(31); else fprintf(cifa,%dttnumbern,num); else if(ch=:)/检测赋值符号,:只能和=匹配,否则不能识别 if(ch= sym=becomes;=ttbecomesn getchdo; else sym=nul; else if(ch= sym=geq;/大于等于 fprintf(cifa,=ttgeqn getchdo; else sym=gtr;/大于ttgtrn sym=ssymch;/不满足上述条件时 按单字 /符处理 switch(ch) casefprintf(cifa,

5、%cttplusnbreak; case %cttminusn%ctttimesn%cttslashn%cttlparenn%cttrparenn%ctteqln%cttcomman%cttneqn%cttsemicolonn default :error(26); if(sym!=period)/判断是否结束 printf( fprintf(cifa,.ttperiodn return 0;/生成目标代码/目标代码的功能码,层差和位移量int gen(enum fct x,int y,int z) if(cx=cxmax)/如果目标代码索引过大,报错Program too long return -1; codecx.f=x; codecx.l=y; codecx.a=z; cx+;/测试字符串int test(bool* s1,bool* s2,int n) if(!inset(sym,s1)/测试sym是否属于s1,不属于则报错n error(n);while(!inset(sym,s1)&(!inset(sym,s2)/检测不通过时,不停获得符号,直到它属于需要或补救的集合 getsymdo;/编译程序主体/lev:当前分程序

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1