- 25
- 0
- 约7.86千字
- 约 11页
- 2021-02-21 发布于天津
- 举报
精品资料
精品资料
可编辑修改
可编辑修改
一、实验名称
预测分析表方法的实现
二、实验目的
理解预测分析表方法的实现原理。
三、实验内容 编写一通用的预测法分析程序, 要求有一定的错误处理能力, 出错后能够使程序继续运 行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。
四、实验内容提示
1.算法数据构造:
构造终结符数组:char Vt[10][5]={ “id ”,” +”……};
构造非终结符数组: char Vn[10]={ };
构造 follow 集数组: char *follow[10][10]={ } (可将 follow 集与预测分析表
合并存放,可省略,直接给出分析表。 ) 数据构造示例(使用的预测分析表构造方法 1 ):
/*data1.h 简单算术表达式数据 */
char VN[10][5]={ E,E,T,T ,F }; // 非终结符表
int length_vn=5; // 非终结符的个数
char VT[15][5]={ id ,+,*,(,),#}; // 终结符表
int length_vt=6; // 终结符的个数
char Fa[15][10]={ TE ,+TE ,,FT,*FT,,(E),id };
// 产生式表 :E-TE 1:E-+TE 2:E- 空
// 3:T-FT 4:T-*FT 5:T- 空 6:F-(E) 7:F-id int analysis_table[10][11]={0,-1,-1,0,-2,-2,0,0,0,0,0,
-1,1,-1,-1,2,2,0,0,0,0,0, 3,-2,-1,3,-2,-2,0,0,0,0,0, -1,5, 4,-1,5, 5,0,0,0,0,0, 7,-2,-2,6,-2,-2,0,0,0,0,0};
// 预测分析表 ,-1 表示出错, -2 表示该行终结符的 follow 集合,用于错误处理
( 1 ) 预测分析表的构造方法 1
给文法的正规式编号:存放在字符数组中,从 0 开始编号,正规式的编号即为该正规式 在数组中对应的下标。
构造正规式数组: char P[10][10]={ “ E-TE ” ,” E-+TE ” ,…… ..}; (正规式可 只存储右半部分,如 E-TE 可存储为 TE ,正规式中的符号可替换,如可将 E 改为 M )
构造预测分析表: int analyze_table[10][10]={ } // 数组元素值存放正规式的编
号, -1 表示出错
( 2 )预测分析表的构造方法 2
可使用三维数组
Char analyze_table[10][10][10]={ }
或
Char *analyze_table[10][10][10]={ }
2 .针对预测分析表构造方法 1 的查找方法提示:
1)
查非终结符表得到非终结符的序
号 no1
2)
查终结符表得到终结符的序号
no2
3)
根 据 no1 和 no2 查
正规式表得到
对应正规式的序号
no3=analyze_table[no1][no2]
,如果 no3=-1
表示出错。
4)
根据 no3 查找对应的正规式
P[no3]
5)
对正规式进行处理
3.错误处理机制
紧急方式的错误恢复方法(抛弃某些符号,继续向下分析)
(1 )栈顶为非终结符 A,串中当前单词属于 FOLLOW (A),则从栈中弹出 A (此时
可认为输入串中缺少 A 表示的结构) ,继续分析。 错误编号为 1
(2 )栈顶为非终结符 A,串中当前单词不属于 FOLLOW ( A),则可使串指针下移一
个位置(认为输入串中当前单词多余) ,继续分析。 错误编号为 2
(3)栈顶为终结符,且不等于串中当前单词,则从栈中弹出此终结符(认为输入串 中缺少当前单词)或者将串指针下移一个位置(认为串中当前单词多余) 。在程序中可选择
上述两种 观点中的一种进行处理。 错误编号 3
因此 error ()函数的编写方式可按如下方式处理
Error ( int errornum )
{
If (errornum==1 )
Else if (errornum==2 )
Else
// 或者可用 choose case 语句处理
}
4.增加了错误处理的预测分析程序预测分析程序的算法:
将“ #”和文法开始符依次压入栈中;
把第一个输入符号读入 a;
do{
把栈顶符号弹出并放入 x 中;
if(x € VT)
{
if(x == a) 将下一输入符号读入 a;
else error(3 );
}
else
if(M[x,a] = x t y1y2 …yk ”)
{
按逆序依次把 yk 、 yk-1 、…、 y1 压入栈中 ;
输出“ xt y
您可能关注的文档
最近下载
- 贵州省2025年中考化学试题.pdf VIP
- 暖通安装工程施工工艺标准(159页 附图丰富).pdf
- 专题05 30天熟记中考课标1600词(Day 25~Day 30)(知识清单)(背诵版).docx VIP
- GJB9001C-2017内审员培训教材.pptx VIP
- 2023年陕西省直遴选笔试真题汇编含答案解析(夺冠).docx VIP
- 医院肝胆胰脾外科2025年年底工作总结及2026年工作计划.docx VIP
- 可控核聚变系列研究(一):聚变启航,未来已来.pdf VIP
- 卷烟物流配送中心建设项目规划设计控制指标国家局.pdf VIP
- 16G362 钢筋混凝土结构预埋件.pdf
- 《人工智能技术基础》课件全套 第1--10章 人工智能简介--- 机器学习方法.pdf
原创力文档

文档评论(0)