实验2 应用预测
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
法LL(1)实现语法分析
一、实验目的
1.学习消除文法左递归算法。
2.掌握预测分析法实现语法分析。
3.自动求得“FIRST”、“FOLLOW”集构造预测分析
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
。
3.能够使用自己编写的分析程序对简单的程序段进行语法翻译。
二、实验内容
用预测分析法编制语法分析程序,实现可以采用任何一种编程工具。候选
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目见表一。
表1 语法分析单元的候选实验题目
编号
文法
A001
已知文法G(E),试编写一个程序,判断文法G所能接受的串。
E->TA
A->+TA
A->(
T->FB
B->*FB
B->(
F->(E)
F->i
A002
已知文法G(S),试编写一个程序,判断文法G所能接受的串。
S->AB
S->bC
A->(
A->b
B->(
B->aD
C->AD
C->b
D->aS
D->c
A003
已知文法G(S),试编写一个程序,判断文法G所能接受的串。
S->MH
S->a
H->LSo
H->(
K->dML
K->(
L->eHf
M->K
M->bLM
A004
已知文法G(E),试编写一个程序,判断文法G所能接受的串。
E->TA
A->+E
A->(
T->FB
B->T
B->(
F->PC
C->*C
C->(
P->(E)
P->a
P->b
P->^
A005
已知文法G(S),试编写一个程序,判断文法G所能接受的串。
S->[A
A->B]Y
Y ->ASY
Y->(
B->iC
C->iC
C->(
A006
已知文法G(Z),试编写一个程序,判断文法G所能接受的串。
Z->aAcB | Bd
A->cD
D->aBD | d
B->bC
C->BcA | (
三、实验要求
1. 定义目标语言的语法
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
。
2. 预测分析表的构造。
3*.对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过程。
四、实验学时
4学时
五、考核要求:
以班为单位,每个班内4-5人为一组,自由组合。选一人为组长,要适当分工,要分工明确。
需上交:源程序,实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
。实验报告只用交电子档,重点写自己那部分的设计思路和实现方法。发qq邮箱:823004751。
六、实验内容指导
1.文法的表示
可以采用字符串数组的形式表示文法中的各项,其优点在于操作相当直观,缺点是当项目较多时,需要较多的检索时间。
2.消除文法左递归核心算法框架如下:
For each vN in Grammer
For each item which started by vN’ (vN’ has been operated)
If has vN->vN’a then
Replace all vN with vN’->beta
Endif
End for
If(vN has left recursive)
Find new sign vNNew
Change
VN->VNB|A to
VN->A vNNew
vNNew->B vNNew
vNNew->z
//这里用z代表空
Else
Copy all vN->beta to tmpGrammerArr
End If
End for
3.求FIRST集与FOLLOW集
可使用递归的方法,采用与手工计算相似的方法。
FIRST集:
若有规则A(BC
1)如果B为终结符,则将B加入到A的FIRST集中
2)如果B为非终结符,则先算出B的FIRST集,并将B的FIRST集加入到A的FIRST集中
3)如果B的FIRST集中包含空串(B能推出空串)则将C的FIRST集加入到A的FIRST集中
FOLLOW集:
若有规则A(BC
1)如果C为终结符,则将C加入到B的FOLLOW集中
2)如果C为非终结符,则将C的FIRST集加入到B的FOLLOW集中,并将将A的FOLLOW集加入到C的FOLLOW集中
3)如果C的FIRST集中包含空串(C能推出空串)则将A的FOLLOW集加入到B的FOLLOW集中
4.预测分析表的构建
预测分析表的构建是一个填充二维字符串数组的过程。预测分析法中所有预测分析法的总控分析程序都是一样的,主要是分析表不同。表中的元素如用规则来表示,需要用三维数组存放,则分析表所需的存储空间较大,为此可考虑用规则号表示预测分析表中的元素。另外表中出错元素的元素可用0表示。
5.预测分析程序的主框架如下:
Push(start sign)to analyse Stack
While(analyse stack is not empty)
{
If top(analyse stack ==curChar)
{
Pop analyse stack.
Get new curChar
}
Else
{
find produce started in analyse table:
rowIndex: top(analyse stack)’s top
colIndex: curChar’s pos
if(not founded)
error
eles if ->z
pop analyse stack
else
if ->B1B2
push B2,B1 to analyse stack.
}
}