实验三预测分析.docx

实验三预测分析.docx

ID:62220084

大小:42.40 KB

页数:6页

时间:2021-04-21

实验三预测分析.docx_第1页
实验三预测分析.docx_第2页
实验三预测分析.docx_第3页
实验三预测分析.docx_第4页
实验三预测分析.docx_第5页
资源描述:

《实验三预测分析.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、个人资料整理,仅供个人学习使用实验三:预测分析1.实验目的:掌握预测分析程序的分析、设计与实现的基本技术与一般方法。2.实验题目:编写并上机调试完成识别由下列文法所定义的表达式的预测分析程序。-T

2、T3.实验步骤分析消除左递归文法转化为:E->TE’E-’>+TE’

3、-TE’

4、∑->FT’T->*FT’’

5、/FT’->(E)

6、i∑F矚慫润厲钐瘗睞枥庑赖賃軔朧。2,判断是否为LL(1)文法:(1)求First(),Follow(),Select()集First(E)={(,i}Follow(E)={),#}First(E’)={+,-∑}Follow(E’)={),#

7、}First(T)={(,i}Follow(T)={+,-,),#}First(T’)={*,/,∑}Follow(T’)={+,-,),#}First(F)={(,i}Follow(F)={*,/,+,-,),#}Select(E->TE’)={(,i}Select(E->’+TE’)={+}Select(E->’-TE’)={-}Select(E->’∑)={∑,),#}Select(T->FT’)={(,i}Select(T->*FT’’)={*}Select(T->/FT’’)={/}Select(T->’∑)={∑,+,),#}Select(F->(E))

8、={(}Select(F->i)={i}由上可知,相同的左部产生式的Select集的交集为空,所以为LL(1)文法由Select集构造预测分析表i+-*/()#E->TE’[0]->TE’[5]E’->+TE’[11]->-TE’[12]->∑->∑T->FT’[20]->FT’[25]T’->∑->∑->*FT’[33]->/FT’[34]->∑->∑F->i[40]->(E)[45](2)设计算法流程框图:1/6个人资料整理,仅供个人学习使用程序参考源码/************************************//*程序名称:LL(1)文法分析程

9、序*//*程序用途:编译原理实验(三)*//*编写日期:20XX年11月9日*//*实验题目:识别下列表达式*//*E->E+T

10、E-T

11、T*//*T->T*F

12、T/F

13、F*//*F->(E)

14、i*//*程序版本:1.0Final*//*程序作者:黄记瑶B0226047*//*作者邮箱:*//************************************//************************************//*程序相关说明*//*A=E'B=T'*//*0=E1=E'2=T3=T'4=F*//*0=i1=+2=-3=*4=/5=(6

15、=)7=#*//************************************/#include"stdio.h"#include"malloc.h"structLchar{charchar_ch;structLchar*next;}Lchar,*p,*h,*temp,*top,*base;charcurchar;//存储当前待比较字符charcurtocmp;//存储当前栈顶字符2/6个人资料整理,仅供个人学习使用intright;//定义开关项inttable[5][8]={{1,0,0,0,0,1,0,0},{0,1,1,0,0,0,1,1},{1,

16、0,0,0,0,1,0,0},{0,1,1,1,1,0,1,1},{1,0,0,0,0,1,0,0}};//存储预测分析表,1为有产生式,0为没有inti,j;voidpush(charpchar)//入栈函数{temp=malloc(sizeof(Lchar));temp->char_ch=pchar;temp->next=top;top=temp;}voidpop(void)//出栈函数{curtocmp=top->char_ch;if(top->char_ch!='#')top=top->next;}voiddoforpush(intt)//根据数组下标计算的

17、值产生式入栈{switch(t){case0:push('A');push('T');break;case5:push('A');push('T');break;case11:push('A');push('T');push('+');break;case12:push('A');push('T');push('-');break;case20:push('B');push('F');break;case25:push('B');push('F');break;case33:push('B');push('F');push('*');break;case34:p

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

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

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