- 18
- 0
- 约1.37万字
- 约 20页
- 2020-11-12 发布于天津
- 举报
实验二LL(1)分析的设计与实现
开课实验室: A201 , A207
实验项目
LL(1)分析的设计与实现
实验类型
设计
实验学时
4
〈〈编译原理》实验指导
14非师
、实验目的
根据某一文法编制调试 LL(1)分析程序,以便对任意输入的符号串进行分析。掌握 LL(1)
分析法的基本原理,LL(1)分析表的构造方法,LL(1)驱动程序的构造方法。
二、 设备与环境
硬件设备:PC机一台
软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,
如C \C++\Java等编程语言环境。
三、 实验要求
输入文法G的非终结符、终结符和产生式;
输出非终结符的FIRST集;
输出非终结符的 FOLLOW 集;
构造文法G的预测分析表;
对输入符号串进行分析。
2、 编程语言不限。
四、 实验原理
1,程序功能(流程图参考):
第1页共24页
2.计算FIRST集合:
First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的 First集合,由
于终结符的First集合就是它自己,所以求出非终结符的 First集合后,就可很直观地得到每个
字符串的First集合。 直接收取:对形如 U — a…的产生式(其中 a是终结符),把a收入到First(U)中 反复传送:对形入 U — P…的产生式(其中 P是非终结符),应把First(P)中的全部内容 传送到First(U)中。
算法描述:见教材 P80
)若 X € Vt,则 FIRST(X)={X};
)若 X € Vn,且有产生式 X-a ??…,a€ Vt,贝U a£ FIRST(X);
)若 X £ Vn,X- ,则 £ FIRST(X)
)若 X,Y1,Y2,Y3,Y4 Yn 都 £ Vn,而产生式 X-Y1,Y2 ??…Yn.当
Y1,Y2,Y3,Y4 Yn 者6能= ,那么 FIRST(X)=并集的 FIRST(Yi)-{ }(0=i=n)
)若 Yi= (i=1,2,3 ??…),则 FIRST(X)=并集的 FIRST(Yi)-{ }并上{ }
计算FOLLOW 集合:
Follow集合是针对非终结符而言的, Follow(U)所表达的是句型中非终结符 U所有可能的后随
终结符号的集合,特别地,“#”是识别符号的后随符。
直接收取:注意产生式右部的每一个形如 “???Ua…”的组合,把a直接收入到Follow(U)
中;
直接收取:对形如… UP???”(P是非终结符)的组合,把First(P)直接收入到Follow(U) 中;
直接收取:若为文法开始符号 S,则把#收入FOLLOW(S);
反复传送:对形如U 一…?的产生式(其中P是非终结符),应把Follow(U)中的全部内 容传送到Follow(P)中。
算法描述:见教材 P82
)若为文法开始符号 S,贝U FOLLOW(S)={#}
)若为文法 A-aBb是一个产生式,则把 FIRST ( b)的非空元素加入 FOLLOW(B)
中。如果b-@则把FOLLOW(A)也加入FOLLOW(B)中。
构造预测分析表:
对于文法的每条产生式 A ,若a FIRST(),贝U M[A, a] = A
若 FIRST( ), b FOLLOW()则 M[A, b] = A ;
分析表M的其他元素均为出错标志 error。
预测分析程序流图:见课本P93-P94
五、程序源码
#include stdio.h
#include stdlib.h”
#define MaxRuleNum 8
#define MaxVnNum 5
#define MaxVtNum 5
#define MaxStackDepth 20
#define MaxPLength 20
#define MaxStLength 50
struct pRNode /*产生式右部结构 */
{
int rCursor;
struct pRNode *next;
};
struct pNode
{
int lCursor;
int rLength; /* 右部长度 */
struct pRNode *rHead; /* 右部结点头指针 */
};
char Vn[MaxVnNum + 1]; /* 非终结符集 */
int vnNum;
char Vt[MaxVtNum + 1]; /* 终结符集 */
int vtNum;
struct pNode P[MaxRuleNum];
int PNum;
char buffer[MaxPLength + 1];
char ch;
char st[MaxStLength]; /* 要分析的符号串 */
struct collectNode
{
int nVt;
您可能关注的文档
- 神经肌肉电刺激疗法(3).docx
- 肾结石知识及饮食建议.docx
- 石家庄苍岩山导游词.docx
- 石家庄导游词3篇.docx
- 石家庄忽忽水导游词.docx
- 石家庄植物园导游词3篇.docx
- 实验:典型信号频谱分析.docx
- 实验八模型设定偏误问题.docx
- 实验二、信号与系统时域分析的MATLAB实现.docx
- 实验三:用FFT对信号作频谱分析.docx
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
原创力文档

文档评论(0)