实验7-8预测分析表方法

实验7-8预测分析表方法

ID:44606667

大小:121.37 KB

页数:5页

时间:2019-10-24

实验7-8预测分析表方法_第1页
实验7-8预测分析表方法_第2页
实验7-8预测分析表方法_第3页
实验7-8预测分析表方法_第4页
实验7-8预测分析表方法_第5页
资源描述:

《实验7-8预测分析表方法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验7-8预测分析表方法一、实验目的理解预测分析表方法的实现原理。二、实验内容:编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。二、实验内容提示1.算法数据构造:构造终结符数组:charVt[10][5]={“idT+”……};构造非终结符数组:charVn[10]={};构造follow集数组:char*follow[10][10]={}(可将follow集与预测分析表合并存放)数据构造示例(使用的预测分析表构造方法1):/*datal.h简单算术表达式数据*/charVN[1O

2、][5]二{〃E〃,"E‘〃,〃T〃,〃T'”,〃卜、〃};〃非终结符表intlength_vn=5;//非终结符的个数charVT[15][5]=Tid;//终结符表intlongth_vt=6;//终结符的个数charFa[15][10]二{〃TE‘”、〃+TE'"FT'〃,〃*□'","“,〃(E)〃,"id"};//产生式表:O:E->TE'l:E'->+TE'2:E'->空//3:T->FT'4:T'->*FT'5:T'->空6:F->(E)7:F->idintanalysis_table[10][ll]={0,-1,-1,0,-2,-2,0,0,0,0,0,-1

3、,1,-1,-1,2,2,0,0,0,0,0,3,~2,~1,3,一2,一2,0,0,0,0,0,T,5,4,T,5,5,0,0,0,0,0,7,-2,-2,6,-2,-2,0,0,0,0,0);〃预测分析表,-1表示出错,-2表示该行终结符的follow集合,用于错误处理,正数表示产生式在数组1怡中的编号,0表示多余的列。(1)预测分析表的构造方法1给文法的正规式编号:存放在字符数组中,从0开始编号,正规式的编号即为该正规式在数组中对应的下标。如上述Fa数组表示存储产生式。构造正规式数组:charP[10][10]={“E・>TE"-E,->+TE,,};(正规式可只存储

4、右半部分,如E・>TE,可存储为TE,,正规式中的符号可替换,如可将E,改为M)构造预测分析表:intanalyze_table[10][10]={}〃数纟ft元素值存放正规式的编号,-1表示出错(2)预测分析表的构造方法2可使用三维数组Charanalyze_table[10][10][10]={}或Char*analyzc_tablc[10][10]={}1.针对预测分析表构造方法1的查预测分析表的方法提示:(1)查非终结符表得到非终结符的序号nol(2)查终结符表得到终结符的序号no2(3)根据nol和no2查预测分析表得到对应正规式的序号no3=analyze_tab

5、le[nol][no2],如果no3=-l表示岀错。(4)根据no3查找对应的正规式Fa[no3](5)对正规式进行处理2.错误处理机制紧急方式的错误恢复方法(抛弃某些符号,继续向下分析)(1)栈顶为非终结符A,串中当前单词属于FOLLOW(A),则从栈中弹出人(此时可认为输入串中缺少A表示的结构),继续分析。错谋编号为1(2)栈顶为非终结符A,串中当両单词不属于FOLLOW(A),则可使串指针下移一个位置(认为输入串中当前单词多余),继续分析。错误编号为2(3)栈顶为终结符,且不等于串中当前单词,则从栈中弹出此终结符(认为输入串中缺少当前单词)或者将串指针下移一个位置(认为

6、串中当前单词多余)。在程序中可选择上述两种观点中的一种进行处理。错误编号3因此error()函数的编写方式可按如下方式处理Error(intcrromum){If(errornum==1)Elseif(eiTomum=2)Else〃或者可用choosecase语句处理}3.增加了错误处理的预测分析程序预测分析程序的算法:将“俨和文法开始符依次压入栈屮;把第一个输入符号读入a;do{把栈顶符号弹出并放入x中;if(xeVT){if(x==a)将下一输入符号读入a;elsecrror(3);}elseiRM[x,a]=“xfyly2…yk”){按逆序依次把yk、yk-1、...、

7、yl压入栈中;输出“xfyly2...yk";}elseifagfollow(x)crror(1);elseerror(2);//在前述的数据定义中查表为・2表示aefollow(x)}while(x!=‘#')三.实验要求给定算术表达式文法,编写程序。测试数据:1.算术表达式文法E->TE'E,->+TE,

8、-TE,T_FT,*FT'T'/FT'%FT'F->(E)

9、idnum给定一符合该文法的句子,如id+id*id$,运行预测分析程序,给出分析过程和每一步的分析结果。输出形式参考下图(S为结束符)

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

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

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