编译原理-实验3-算符优先分析.docx

编译原理-实验3-算符优先分析.docx

ID:55556453

大小:30.74 KB

页数:19页

时间:2020-05-16

编译原理-实验3-算符优先分析.docx_第1页
编译原理-实验3-算符优先分析.docx_第2页
编译原理-实验3-算符优先分析.docx_第3页
编译原理-实验3-算符优先分析.docx_第4页
编译原理-实验3-算符优先分析.docx_第5页
资源描述:

《编译原理-实验3-算符优先分析.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验3算符优先分析一、实验目的通过设计编制调试构造FIRSTVT集、LASTVT集和构造算符优先表、对给定符号串进行分析的程序,了解构造算符优先分析表的步骤,对文法的要求,生成算符优先关系表的算法,对给定的符号串进行分析的方法。二、实验内容1.给定一文法G,输出G的每个非终结符的FIRSTVT集和LASTVT集。2.构造算符优先表。3.对给定的符号串进行分析,包含符号栈,符号栈栈顶符号和输入串当前符号的优先级,最左素短语和使用的产生式和采取的动作。三、程序思路在文法框内输入待判断文法产生式,格式E-

2、>a

3、S,注意左部和右部之间是“->”,每个产生式一行,ENTER键换行。文法结束再输入一行G->#E#1.先做文法判断,即可判断文法情况。2.若是算符优先文法,则在优先表栏显示优先表。3.写入要分析的句子,按回车即可。4.在分析过程栏,可以看到整个归约过程情况四、实验结果FunctorFirst.h#include#include#include#includeusingnamespacestd;#definerightlength20#

4、defineproduct_num20//产生式最多个数#definenum_noterminal26//非终结符最多个数#definenum_terminal26//终结符最多个数structProduction{charLeft;charRight[rightlength];intnum;};structVT{boolvt[num_noterminal][num_terminal];};structStack{charP;chara;};classCMyDlg{public:CMyDlg();voidI

5、nputRule();CStringshowLastVT();CStringshowFirstVT();CStringshownoTerminal(charG[]);CStringshowTerminal(charg[]);CStringshowLeftS(charS[],intj,intk);voidInitAll();CStringshowSentence(CStringsen,intstart);CStringshowStack(charS[],intn);voidInitarry(chararry[

6、],intn);CStringProdtoCStr(Productionprod);intselectProd(inti,intj,charS[]);voidpreFunctor(CStringsen);voidinsertFirstVT(StackS[],int&sp,charP,chara);voidinsertLastVT(StackS[],int&sp,charP,chara);voidShowPreTable();voidcreatePreTable();charpretable[num_term

7、inal][num_terminal];boollike_Q(Productionprod,charQ);voidcreateLastVT();boollikeQ_(Productionprod,charQ);boollikeQa_(Productionprod);boollike_aQ(Productionprod);boollike_a(Productionprod);boollikea_(Productionprod);boolDignose(charc);intfindg(charc);intfin

8、dG(charc);voidcreateFirstVT();voidcreateTerminal();voidcreatenoTerminal();voidbuildProduction(CStrings);booltest(CStrings);voidparse();//语法分析CStringgram;//存放文法;Productionproduction[product_num];VTFirstVT;VTLastVT;intlocProduct;//已有产生式个数charG[num_noterminal

9、];charg[num_terminal];inti_G;inti_g;CStringm_sen;};FunctorFirst.cpp#include"FunctorFirst.h"CMyDlg::CMyDlg(){}boolCMyDlg::test(CStrings)//测试是否是算符优先文法{boolt=1;for(inti=0;i64&&s[i]<9

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

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

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