版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、个人资料整理,仅供个人学习使用实验三:预测分析1 .实验目的:掌握预测分析程序的分析、设计与实现的基本技术与一般方法。2 .实验题目:编写并上机调试完成识别由下列文法所定义的表达式的预测分析程序。e. h-t k-t | t阡小1 (e)|i3.实验步骤分析 消除左递归文法转化为:e-te e- +t e -te | !ft t*ft |/ft 4(e)|i嚼郛闰属钞瘗睐杨尻赖脸2,判断是否为ll(1)文法:求 first(), follow(),select()集first(e)=(,ifollow(e)=),#2 / 6first(e尸以first(t)=(,i first(t )=*,/
2、, first(f)=(,i follow(e )=),#follow(t尸+,-,),#汇follow(t )=+),#follow(f尸*,/,+,-,),#select(e-te )=(,i select(e,+t e )=+ select(e- -t e )= select(e-旺)= ,),# select(t-ft )=(,i select(t -*ft )=* select(t -/ft )=/select(t -旺)= e ,+,),# select(f-(e)尸(select(f-i)=i由上可知,相同的左部产生式的select集的交集为空,所以为 ll(1)文法由selec
3、t集构造预测分析表i+-*/()#e-te 0-te 5e,- +t e 11- -te 12-三-et-ft 20-f25-e-汇-*ft 33-/ft 34-汇-ef-i40-(e)45(2)设计算法流程框图:程序参考源码/*程序名称/*程序用途/*编写日期/*实验题目/*/*/*/*程序版本/*程序作者/*作者邮箱/*/ll(1)文法分析程序*/编译原理实验(三)*/20xx年11月9日*/识别下列表达式*/e-e+t|e-t|t*/ t-t*f|t/f|f*/f-(e)|i*/1.0 final*/黄记瑶 b0226047*/*/*/ /*/*程序相关说明*/*a=e b=t*/*0=
4、e 1=e 2=t 3=t 4=f*/*0=i 1=+ 2=- 3=* 4=/ 5=( 6=) 7=#*/ /*/ #include stdio.h#include malloc.hstruct lcharchar char_ch;struct lchar *next;lchar,*p,*h,*temp,*top,*base;char curchar;/存储当前待比较字符 char curtocmp;/存储当前栈顶字符个人资料整理,仅供个人学习使用int right;/ 定义开关项int table58=1,0,0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,0,1,0
5、,0,0,1,1,1,1,0,1,1,0 为没有1,0,0,0,0,1,0,0;/ 存储预测分析表, 1 为有产生式,int i,j;void push(char pchar)/ 入栈函数temp=malloc(sizeof(lchar);temp-char_ch=pchar;temp-next=top;top=temp;void pop(void) / 出栈函数curtocmp=top-char_ch;if(top-char_ch!=#)top=top-next;void doforpush(int t)/ 根据数组下标计算的值产生式入栈switch(t)case 0:push(a);pus
6、h(t);break;case 5:push(a);push(t);break;case 11:push(a);push(t);push(+);break;case 12:push(a);push(t);push(-);break;case 20:push(b);push(f);break;case 25:push(b);push(f);break;case 33:push(b);push(f);push(*);break;case 34:push(b);push(f);push(/);break;case 40:push(i);break;case 45:push();push(e);pus
7、h();void changchartoint()/ 根据 curchar,curtocmp 转为数字以判断是否有产生式祸测槌。switch(curtocmp)case a:i=1;break;case b:i=3;break;case e:i=0;break;case t:i=2;break;case f:i=4;switch(curchar)case i:j=0;break;case +:j=1;break;case -:j=2;break;case *:j=3;break;case /:j=4;break;case (:j=5;break;case ):j=6;break;case #:
8、j=7;void dosome(void)/ 算法函数int t;for(;)pop();curchar=h-char_ch;printf(n%ct%cn,curchar,curtocmp);if(curtocmp=# & curchar=#)break;残鹫楼静if(curtocmp=a|curtocmp=b|curtocmp=e|curtocmp=t|curtocmp=f)/当前字符为非终结符if(curtocmp!=#)/ 当前比较字符不为 # changchartoint();if(tableij)/ 有产生式 t=10*i+j; / 计算产生式在数组中的位置doforpush(t);
9、continue;日se没有产生式right=0; / 出错 break;else当前比较字符为#if(curtocmp!=curchar)right=0; / 出错 break;elsebreak;正确日se当前字符为终结符if(curtocmp!=curchar)right=0;/ 出错break;elseh=h-next;/ 读取下一个字符 continue;void main(void)char ch;right=1;/ 开关项为 1base=malloc(sizeof(lchar);/ 初始化堆栈base-next=null;base-char_ch=#;temp=malloc(si
10、zeof(lchar);temp-next=base;temp-char_ch=e;top=temp;/ 初始化堆栈h=malloc(sizeof(lchar);h-next=null;p=h;do/ 初始化字符串ch=getch();putch(ch);if(ch=i|ch=+|ch=-|ch=*|ch=/|ch=(|ch=)|ch=#)/ 输入合法字符酽锕极镇桧猪锥h苣钿。temp=malloc(sizeof(lchar);temp-next=null;temp-char_ch=ch;h-next=temp;h=h-next;曰se输入不合法字符temp=p-next;printf(ninput a wrong char!input again:n);for(;) / 打印当前字符串if (temp!=null)print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030绿色建材市场发展路径与环保政策影响深度调研
- 2025-2030经颅直流电刺激结合认知训练的商业化伦理边界探讨
- 2025-2030纳米载体技术在生物农药递送系统中的创新应用研究
- 2025-2030纳米磁性材料在电子信息领域应用现状与未来发展策略研究报告
- 2025-2030纳米材料在智能购物袋中的技术集成与商业化路径报告
- 2025-2030纳米显微镜市场发展动态及投资风险评估报告
- 2025-2030精酿啤酒馆空间设计趋势及坪效提升实战案例解析
- 2025-2030精酿啤酒节事活动IP商业化运营价值评估报告
- 2025-2030精酿啤酒文化IP授权商业模式与衍生品开发及变现渠道研究
- 2025-2030精酿啤酒坊区域分布特征与城市文旅融合发展的可行性报告
- 污水厂设备培训课件
- 2025年《AI人工智能知识竞赛》题库及答案解析
- 人音版小学音乐三年级上册测试题(音乐理论)及答案
- 教师资格面试-75篇结构化逐字稿
- 油田生产调度管理与人员素质提升
- Aspen 中文培训资料
- GB 1886.358-2022食品安全国家标准食品添加剂磷脂
- GB/T 16422.2-2022塑料实验室光源暴露试验方法第2部分:氙弧灯
- GB/T 10045-2018非合金钢及细晶粒钢药芯焊丝
- 动火作业备案表(一式两联)
- 制备液相色谱技术(LCMS)课件
评论
0/150
提交评论