已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北水利水电学院 编译原理 实验报告一、 实验题目:语法分析(算符优先分析程序)(1)选择最有代表性的语法分析方法算符优先法;(2)选择对各种常见程序语言都用的语法结构,如赋值语句(尤指表达式)作为分析对象,并且与所选语法分析方法要比较贴切。二、 实验内容(1)根据给定文法,先求出FirstVt和LastVt集合,构造算符优先关系表(要求算符优先关系表输出到屏幕或者输出到文件);(2)根据算法和优先关系表分析给定表达式是否是该文法识别的正确的算术表达式(要求输出归约过程)(3)给定表达式文法为:G(E): E#E#EE+T | TTT*F |FF(E)|i(4) 分析的句子为: (i+i)*i和i+i)*i三、 程序源代#include#include#include#include#define SIZE 128char priority66; /算符优先关系表数组char inputSIZE; /存放输入的要进行分析的句子char remainSIZE; /存放剩余串 char AnalyseStackSIZE; /分析栈void analyse();int testchar(char x); /判断字符X在算符优先关系表中的位置void remainString(); /移进时处理剩余字符串,即去掉剩余字符串第一个字符int k;void init()/构造算符优先关系表,并将其存入数组中priority00=;priority01=;priority02=;priority03=;priority05=;priority10=;priority11=;priority12=;priority13=;priority15=;priority20=;priority21=;priority22=$;/无优先关系的用$表示priority23=$;priority24=;priority25=;priority30=;priority31=;priority32=;priority33=;priority41=;priority42=$;priority43=$;priority44=;priority45=;priority50=;priority51=;priority52=;priority53=;priority54=$;priority55=;void analyse()/对所输入的句子进行算符优先分析过程的函数FILE *fp;fp=fopen(li,a);int i,j,f,z,z1,n,n1,z2,n2;int count=0;/操作的步骤数char a; /用于存放正在分析的字符char p,Q,p1,p2;f=strlen(input); /测出数组的长度for(i=0;i) for( ; ; ) Q=AnalyseStackj; if(AnalyseStackj-1=+|AnalyseStackj-1=*|AnalyseStackj-1=i|AnalyseStackj-1=(|AnalyseStackj-1=)|AnalyseStackj-1=#) j=j-1; else j=j-2; z1=testchar(AnalyseStackj); n1=testchar(Q); p1=priorityz1n1; if(p1=) /把AnalyseStackj+1AnalyseStackk归约为N count+; printf(%d) %st%10ct%5c%17st 归约n,count,AnalyseStack,p,a,remain); fprintf(fp,(%d) %st%17st %sn,count,AnalyseStack,remain,归约); k=j+1; i-; AnalyseStackk=N; int r,r1; r=strlen(AnalyseStack); for(r1=k+1;r1r;r1+) AnalyseStackr1=0; break; else continue;elseif(p=) /表示移进count+;printf(%d) %st%10ct%5c%17st 移进n,count,AnalyseStack,p,a,remain);fprintf(fp,(%d) %st%17st %sn,count,AnalyseStack,remain,移进);k=k+1;AnalyseStackk=a;remainString();elseif(p=)z2=testchar(AnalyseStackj);n2=testchar(#);p2=priorityz2n2;if(p2=)count+;printf(%d) %st%10ct%5c%17st 接受n,count,AnalyseStack,p,a,remain); fprintf(fp,(%d) %st%17st %sn,count,AnalyseStack,remain,接受);printf(该句子是该文法的合法句子。n); fprintf(fp,%s,该句子是该文法的合法句子。n);break;elsecount+;printf(%d) %st%10ct%5c%17st 移进n,count,AnalyseStack,p,a,remain);fprintf(fp,(%d) %st%17st %sn,count,AnalyseStack,remain,移进);k=k+1;AnalyseStackk=a;remainString();elseprintf(错误!该句子不是该文法的合法句子!n); fprintf(fp,%s,错误!该句子不是该文法的合法句子。n);break;fclose(fp); int testchar(char x)int m;if(x=+)m=0;if(x=*)m=1;if(x=i)m=2;if(x=()m=3;if(x=)m=4;if(x=#)m=5;return m;void remainString()int i,j;i=strlen(remain);for(j=0;j#E#n);printf(1)E-E+Tn);printf(2)E-Tn);printf(3)T-T*Fn);printf(4)T-Fn);printf(5)F-(E)n);printf(6)F-in);FILE *fp;fp=fopen(li,w);fprintf(fp,%s,要分析的文法为:n);fprintf(fp,%s,(0)E-#E#n);fprintf(fp,%s,(1)E-E+Tn);fprintf(fp,%s,(2)E-Tn);fprintf(fp,%s,(3)T-T*Fn);fprintf(fp,%s,(4)T-Fn);fprintf(fp,%s,(5)F-(E)n);fprintf(fp,%s,(6)F-in);fprintf(fp,%s,优先关系表为:n); fprintf(fp,%s, + * i ( ) #n);for(m=0;m6;m+)fprintf(fp,%c ,s1m);for(n=0;n n); printf( * n); printf( i n); printf( ( n); printf( # =n);printf(-n);printf(请输入要进行分析的句子(以#号结束输入):n); gets(input);/将输入的字符串存到数组中fprintf(fp,%s,需要分析的字符串为:n); fprintf(fp,%s,input);fprintf(fp,%s,n); fclose(fp);printf(步骤 栈 优先关系 当前符号 剩余输入串 移进或归约n);k=0;AnalyseStackk=#;AnalyseStackk+1=0;int length,i; /初始化剩余字符串数组为输入串length=strlen(input);/for(i=0;ilength;i+)remaini=inputi;remaini=0;analyse();/对所输入的句子进行算符优先分析过程的函数四、测试结果输入串(i+i)*i的算符优先分析过程输入串i+i)*i的算符优先分析过程五、小结(包括收获、心得体会、存在的问题及解决问题的方法、建议等)本次实验是算符优先分析法,这种方法特别有利于表达式分析,宜于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品与安全课件
- 浙江网盛生意宝股份有限公司偿债能力和盈利能力分析综合结论及建议
- 安全保密课件
- 家庭教育亲子互动游戏题库及答案解析
- 基于ARM的嵌入式系统编程测试题及解答手册全集
- 就业指导课程知识点总结与练习题集答案
- 懒癌测试题答案详解如何克服懒惰心理
- 2024年国家电工进网作业许可证考试复习题库及答案(共250题)
- 开播前bi备知识模拟题集
- 德勤春招笔试内容分析及备考技巧
- 《第13课 分解问题步骤》教学设计教学反思-2023-2024学年小学信息技术浙教版2023三年级上册
- 《杀死一只知更鸟》课件
- 大型方格沉井施工方案
- 2025年大学《电缆工程-电缆电气性能测试》考试备考题库及答案解析
- GB/T 21782.8-2025粉末涂料第8部分:热固性粉末贮存稳定性的评定
- 山东省青岛市2025-2026学年高三上学期期初调研检测数学试题(含解析)
- 江苏2025年工贸行业企业主要负责人及安全管理人员真题模拟及答案
- 2025年咖啡产业咖啡产业数字化发展研究报告及未来发展趋势预测
- 2025中国留学生回国就业现状及政策支持研究报告
- 2025中国南水北调集团水网智慧科技有限公司秋季招聘14人笔试历年典型考点题库附带答案详解2卷
- 2025年上海市春考语文真题作文7篇范文:我们的劳动使大地改变了模样
评论
0/150
提交评论