实验二 LL(1)预测分析报告.doc

实验二 LL(1)预测分析报告.doc

ID:48870753

大小:209.00 KB

页数:25页

时间:2020-02-03

实验二 LL(1)预测分析报告.doc_第1页
实验二 LL(1)预测分析报告.doc_第2页
实验二 LL(1)预测分析报告.doc_第3页
实验二 LL(1)预测分析报告.doc_第4页
实验二 LL(1)预测分析报告.doc_第5页
资源描述:

《实验二 LL(1)预测分析报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《编译原理》实验指导13非师实验二LL(1)分析的设计与实现开课实验室:A201,A207实验项目LL(1)分析的设计与实现实验类型设计实验学时4一、实验目的根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。掌握LL(1)分析法的基本原理,LL(1)分析表的构造方法,LL(1)驱动程序的构造方法。二、设备与环境1.硬件设备:PC机一台2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如CC++Java等编程语言环境。三、实验要求1.输入文法G的非终结符、终结符和产生式;(1)输出非终结符的FIRST集;(2)输出

2、非终结符的FOLLOW集;(3)构造文法G的预测分析表;(4)对输入符号串进行分析。2、编程语言不限。四、实验原理1.程序功能(流程图参考):第25页《编译原理》实验指导13非师2.计算FIRST集合:First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合。²直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中²反复传送:对形入U-P…的产生式(其中P是非终结符),应把First(P)中的全部内容传送到

3、First(U)中。算法描述:见教材P80①)若X∈Vt,则FIRST(X)={X}; ②)若X∈Vn,且有产生式X->a……,a∈Vt,则a∈FIRST(X);               ③)若X∈Vn,X->e,则e∈FIRST(X) ④)若X,Y1,Y2,Y3,Y4…………Yn都∈Vn,而产生式X->Y1,Y2……Yn.当Y1,Y2,Y3,Y4…………Yn都能=>e,那么FIRST(X)=并集的FIRST(Yi)-{e}(0<=i<=n) ⑤)若Yi=>e(i=1,2,3……),则FIRST(X)=并集的FIRST(Yi)-{e}并上{e} 3.计算FOLLOW集合:F

4、ollow集合是针对非终结符而言的,Follow(U)所表达的是句型中非终结符U所有可能的后随终结符号的集合,特别地,“#”是识别符号的后随符。²直接收取:注意产生式右部的每一个形如“…Ua…”的组合,把a直接收入到Follow(U)中;²直接收取:对形如“…UP…”(P是非终结符)的组合,把First(P)直接收入到Follow(U)中;²直接收取:若为文法开始符号S,则把#收入FOLLOW(S);²反复传送:对形如U-…P的产生式(其中P是非终结符),应把Follow(U)中的全部内容传送到Follow(P)中。算法描述:见教材P82①)若为文法开始符号S,则FOLLOW(

5、S)={#}②)若为文法A->aBb是一个产生式,则把FIRST(b)的非空元素加入FOLLOW(B)中。如果b->@则把FOLLOW(A)也加入FOLLOW(B)中。4.构造预测分析表:(1)对于文法的每条产生式A®a,若aÎFIRST(a),则M[A,a]=A®a;(2)若eÎFIRST(a),bÎFOLLOW(a)则M[A,b]=A®a;(3)分析表M的其他元素均为出错标志error。5.预测分析程序流图:见课本P93-P94五、程序源码#include"stdio.h"第25页《编译原理》实验指导13非师#include"stdlib.h"#defineMaxRuleN

6、um8#defineMaxVnNum5#defineMaxVtNum5#defineMaxStackDepth20#defineMaxPLength20#defineMaxStLength50structpRNode/*产生式右部结构*/{intrCursor;structpRNode*next;};structpNode{intlCursor;intrLength;/*右部长度*/structpRNode*rHead;/*右部结点头指针*/};charVn[MaxVnNum+1];/*非终结符集*/intvnNum;charVt[MaxVtNum+1];/*终结符集*/int

7、vtNum;structpNodeP[MaxRuleNum];intPNum;charbuffer[MaxPLength+1];charch;charst[MaxStLength];/*要分析的符号串*/structcollectNode{intnVt;structcollectNode*next;};structcollectNode*first[MaxVnNum+1];/*first集*/structcollectNode*follow[MaxVnNum+1];/*follow集*/in

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

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

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