编译原理(PL0编译程序源代码)

上传人:cn****1 文档编号:432863118 上传时间:2023-11-12 格式:DOCX 页数:26 大小:53.24KB
返回 下载 相关 举报
编译原理(PL0编译程序源代码)_第1页
第1页 / 共26页
编译原理(PL0编译程序源代码)_第2页
第2页 / 共26页
编译原理(PL0编译程序源代码)_第3页
第3页 / 共26页
编译原理(PL0编译程序源代码)_第4页
第4页 / 共26页
编译原理(PL0编译程序源代码)_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《编译原理(PL0编译程序源代码)》由会员分享,可在线阅读,更多相关《编译原理(PL0编译程序源代码)(26页珍藏版)》请在金锄头文库上搜索。

1、肖耳粗昌恒友上如佟#:仪縣田録、n(=M:pq肖耳gM:HBw_)uedo运、(-M-cq.EKR-wrgr)uedoHep#:策矍 0_d 生昭燧cMcvi)uedoHU_Jlueur=s%=)ueos、(=-如#:仪*慝録=)上u_dAEnuEASMQlxu -ooqsurolu iu 一 军昌旺迪slh決蒲臨還00sZ 一 SM0ESU 一方P# buEs-apnpu 0一d-apnE# AJZ.o_ptnv pnpu_#-(s.1 PQ.EK坡 R坦哩)#:仪 Ja州忙邻日宦r 圧 *#:仪 即常墨冏粘回* 回*如#:策矍old * -W凶Ih颠口嶷*2iu-notouae、(ui5

2、SOE_(s SOE、(运)SOE 倉)so E旺嬰HMQlxuoogoqHHIOFU4 丄 po 匸 dMQlxu _(EnuEAS、SASBeq4ES、SASBeqpep24xu)4esppe、(=M=C込來血枣)ued&Hsd PM-cxymKVsrE 嬰)uedoJHd(EAS瞽II工七:右0H-HXOHO0OH wwo七 U 一、(AHHoo2eu-HHoa;lueuHlp4_MS2qElueur=s%=)ueos 浪血絵田録Kam、n(=(N、AH#:仪HHoo2euHlp4_MS4s 一一lueur=s%=)ueos mKvwm碣刃録KnmlyxNA)址仪即电弋定&碣壕Kamn)

3、上u_dHU&一、( Eeur=lAS%n上 u 匸 e 广-如#:仪 40_dHn、珈朮酰)fc_ose(fa)jfc_ose(fal)jfc_ose(fas)jfc_ose(fsje_se宀Prinrfvcanr-Fopen f=e=H逊壽=m出Fresf strcpy(8l(wordEo)、=ca=) j S1rcpy2:wordi2 j io j j、=cons3j stTcpy2:word2:mjj、=do=)j S1rcpy2:wordi4jmj j、=end=)j strcpy2:words:mjj、二f=)j S1rcpy2:words:mj j、=odcr)j S1rcpy2

4、:words:mj -procedure- S1rcpy2:wordi8jiojj、=reacr)j stTcpy2:wordi9jmjj、-r-Fherrw S1rcpy2:words:=6)、=33.j strcpy:word fl 1 jrojj、=wh=e=) j S1rcpy2:wordil2jiojj、=wri1:e9 wsymoTbeginsym;二茹弱昭+牀型 +召牀 wsymlTca=symjwsym2=constsym; wsym3=dosym; wsym4=endsym;wsym5=ifsym; wsym6=oddsym; wsym7=procsym; wsym8=rea

5、dsym; wsym9=thensym; wsym10=varsym;wsym11=whilesym; wsym12=writesym;strcpy(&(m nemo niclitO),lit);设置指令名称 strcpy(&(mnemonicopr0),opr); strcpy(&(mnemoniclodO),lod); strcpy(&(mnemonicstoO),sto); strcpy(&(mnemoniccalO),cal); strcpy(&(mnemonicinteO),int); strcpy(&(mnemonicjmpO),jmp); strcpy(&(mnemonicjpc

6、O),jpc);for(i=0;ivsym num;i+)设置符号集 declbegsysi=false; statbegsysi=false; facbegsysi=false;declbegsysco nstsym=true;设置声明开始符号集 declbegsysvarsym=true;declbegsysprocsym=true;statbegsysbegi nsym=true;设置语句开始符号集 statbegsyscallsym=true;statbegsysifsym=true; statbegsyswhilesym=true;facbegsyside nt=true;设置因子开

7、始符号集 facbegsysnumber=true;facbegsyslparen=true; /用数组实现集合的集合运算int inset(int e,bool* s)return se;int addset(bool*sr,bool* s1,bool* s2,int n)int i;for(i=0;ivn;i+) sri=s1i|s2i;return 0;void error(i nt n)出错处理,打印出错位置和错误编码 char space81;memset(space, 32,81);spacecc-1=0;printf(error(%d),n);fprintf(fa1,error(

8、%d),n);switch(n)case 1:printf(tt常量说明中的“=”写成:=” n); fprintf(fa1,tt 常量说明中的“=”写成:=” n); break;case 2:pri ntf(tt常量说明中的=后应该是数字n); fpri ntf(fa1,tt常量说明中的=后应该是数字n); break;case 3:pri ntf(tt常量说明符中的表示符应该是=门); fpri ntf(fa1,tt常量说明符中的表示符应该是=n); break;case 4:prin tf(ttco nst,var,procedure 后应为标识符 n); fpri ntf(fa1,t

9、tco nst,var,procedure 后应为标识符n); break;case 5:printf(tt 漏掉了 ,” 或“;” n);fprintf(fa1,tt 漏掉了 ,” 或“;” n); break;case 6:pri ntf(tt过程说明后的符号不正确n);fpri ntf(fa1,tt过程说明后的符号不正确n); break;case 7:pri ntf(tt应是语句开始符山);fpri ntf(fa1,tt 应是语句开始符 n); break;case 8:prin tf(tt程序体内语句部分的后跟符不正确n);fpri ntf(fa1,tt程序体内语句部分的后跟符不正确

10、n); break;case 9:printf(tt程序结尾丢了句号 nn); fprintf(fa1,tt程序结尾丢了句号 n); break;case 10:printf(tt 语句之间漏了“;” n);fprintf(fa1,tt 语句之间漏了“;” n); break;case 11:pri ntf(tt标识符拼写错误或未说明n);fpri ntf(fa1,tt标识符拼写错误或未说明n);break;case 12:prin tf(tt赋值语句中,赋值号左部标识符属性应是变量n); fprin tf(fa1,tt赋值语句中,赋值号左部标识符属性应是变量n); break;case 13

11、:printf(tt赋值语句左部标识符后应是复制号“:=” n); fprintf(fa1,tt赋值语句左部标识符后应是复制号“:=” n); break;case 14:pri ntf(ttcall 后应为标识符 n);fprin tf(fa1,ttcall 后应为标识符n);break;case 15:pri ntf(ttcall后标识符属性应为过程n);fpri ntf(fa1,ttcall后标识符属性应为过程n); break;case 16:prin tf(tt 条件语句中丢了 the nn);fpri ntf(fa1,tt 条件语句中丢了 the nn); break;case 17:printf(tt 丢了 “end” 或 “;” n);fprintf(fa1,tt 丢了 end或;n); break;case 18:printf(ttwhile型循环语句中丢了 “do” n);fprintf(fa1,ttwhile型循环语句中丢了 “do” n); break;case 19:prin tf(tt语句后的符号不正确n);fprin tf(fa1,tt语句后的符号不正确n);break;case 20:pri ntf(tt应为关系运算符山);fp

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号