推荐实验-预测分析

实验四语法分析(一)——预测分析技术实验目的:对给定的文法及其预测分析表,对输入的符号串进行识别,并给出符号串的识别过程,包括各步骤的栈内容,输入和输出。实验要求:首先应该详细掌握预测分析技术的原理,方法详细的分析步骤。其次要了解数据结构中栈部分的内容,包括栈的特点及在预测分析中的使用情况,预测分析其实可以看成是对两个基本的栈的操作,因此,对栈的有关知识耍求比较熟悉。在实验前可复习数据结构屮栈的内容,这样可使木实验比较顺利的进行。下面以例说明最后所应实现的功能输入文法规则0:Z::=BA1:A::=+BA3:B::=DC4:C::=*DC6:D::=(Z)7:D::=i2:A::=e5:C::=e输入预测分析表!0:Z::=BA1:A::=+BA3:B::=DC4:C::=*DC6:D::=(Z)7:D::=i2:A::=£5:C::=e依次输入PTable[Z,+]PTabIe[Z,*]PTable[Z,(]PTable[Z,)]PTable[Z,i]PTable[Z,#]对应的规则编号:・1-10-10-1依次输入PTable[A,+]PTable[A,*]PTable[A,(]PTable[A,)]PTable[A,i]PTable[A,#]对应的规则编号:1-12-12依次输入PTablc[B,+]PTablc[B,*]PTablc[B,(]PTablc[B,)]PTablc[B,i]PTablc[B,#]对应的规则编号:-1-13-13-1依次输入PTable[C,+]PTable[C,*]PTable[C,(]PTable[C,)]PTable[C,i]PTable[C,#]对应的规则编号:54-15-15依次输入PTable[D,+]PTable[D,*]PTable[D,(]PTable[D,)]PTable[D,i]PTable[D,#]对应的规则编号:・16-17-1+*()#ZZ::=BAZ::=BAAA::=+BAA::=£A::=£BB::=DCB::=DCCC::=eC::=*DCC::=eC::=£DD::=(Z)D::=i谙输入要识别的符号串:i+i*i步骤栈输入输出0#Zi+i*i#Z::=BA1#ABi+i*i#B::=DC2#ACDi+i*i#D::=i3#ACii+i*i#4#AC+i*i#C::=85#A+i*i#A::=+BA6#AB++i*i#7#ABi*i#B::=DC8#ACDi*i#D::=i9#ACii*i#10#AC*i#C::=*DC11#ACD*引#12#ACDi#D::=i13#ACii#14#AC#C::=815#A#A::=816##Success!该符号串是该文法的句了!输入要识别的符号串:ii步骤栈输入输出0#zii#Z::=BA1#ABii#B::=DC2#ACDii#D::=i3#ACiii#4#ACi#Failure!该符号串不是该文法的句了!参考程序#include<iostream.h>#include<String.h>#include<assert.h>#include<iomanip.h>structRegularity//存放文法规则的数组结构{charregular[20);};classStack〃定义一个栈类{public:Stack(int=10);~Stack(){delete[]elements;}voidPush(constchar&item);charPop();charGetTopO;voidMakeEmpty(){top—1;}intIsEmpty()const{returntop==-l;}intIsFull()const{returntop==maxSize-1;}voiddisplay();private:inttop;char*elements;intmaxSize;};Stack::Stack(ints):top(-l),maxSize(s){elements=newchar[maxSize];assert(elements!=O);}voidStack::Push(constchar&item){assert(!IsFull());elements[++top]=item;}charStack::Pop(){assert(!IsEmpty());returnelements[top—];}charStack::GetTop()assert(!IsEmpty());g["!s]丄At++9ZlSJ[r)jB[nSoj-[i]XejJv=[o^is]iA}(OZlS==lU)Jl:平aiq([Oin爺j[!]/Csjv=[ui]丄A)J!(++iutazis>uito=ui)jqj}(3=i[f>[n爺」[U&jjv芳可il讯iQ匸1)J!耶aiq([f]jE{nSaj[i]AEjjy=[o]Jiqn5aj,[>[]XBiiv)[ji(++*q塚u可>*O=”)JQJ}(++p(jE|nSoj[i]XujJv)uo|J)s>pt7=r)JOj}(++!山闻u可>tO=!“Q7:0="!s^iT”T!nq}(qiSuoiHir[]XejJV心」引n乔才[]JLA朋ip)JLAPWHP!°a•.0\.=[^is]nat+4-OZlS•[o]JBlrt8w[i]Kuiiv=[9Zis]f<a}(ozis==Qji冷Ewq([o]JB|n§oj-[i]XBJJV=[r]NA)J!(4-f-pozis>po=OJQ4}(++inn§uoi>vo=!)jQjJ0=9ZIS4Piiui}(qjSuo|hiic[]Kbjjv心!」引nEa爼[]nAJBlP)NAPu!JP?oa///////////////〃////〃////〃////〃//〃〃///〃//〃〃///〃//〃〃///〃////〃////////////////////////////////////////////////////////////////////{tsjuouio|0»jnoo;Ol=[l+doj]s)uoiu0Q}()人引ds!p::Y>c)sP!oai[doi]s)uauiapujnpj}VT[size]=#;VT[size+l]=*\O';}intFindRegularity(intPTable[][20],charVN[],charVT[],charlemp1,chartemp2){inti,j;intsizel=strlen(VN);intsize2=strlen(VT);for(i=0;i<sizel;i++)if(VN[i]=temp1)break;fdr(j=0;j<sizc2;j++)if(VT[j]=temp2)break;returnPTable[i][j];}intChcckVT(charVT[],chartemp){inti;intsize...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?