LIAOCHENG UNIVERSITY
计算机学院实验报告
【2016 ~2017学年第2学期】
【一、基本信息】
【实验课程】编译原理
【设课形式】独立□非独立√【课程学分】 4
【实验项目】实验二语法分析器的设计
【项目类型】基础□综合√设计□研究创新□其它[ ] 【项目学时】 4 【学生姓名】【学号】
【系别专业】软件开发
【实验班组】级班组台
【同组学生】
【实验室名】综合实验楼
【实验日期】【报告日期】
【二、实验教师对报告的最终评价及处理意见】
实验成绩:(涂改无效)
指导教师签名:年月日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案
实验内容和原理或涉及的知识点(综合性实验):
1. 输入任意文法,改写文法使其成为LL(1)文法。
2. 构造文法的预测分析表;
3. 设计堆栈和预测分析表的机内表示;
4. 设计并书写语法分析程序;
5. 调试并运行语法分析程序;
6. 实验结果分析
●分析程序中文法存储所采用的数据结构
●分析结果并写出自己的心得体会
提示:
对于所选定的分析方法,如有需要,应选择一种合适的数据结构,以构造所给文法的机内表示。
T→FW’| ε
W’→MFW’| ε
F→( E ) | i
M→* | /
2. 构造文法的预测分析表;
i + - + / ( ) #
E E->TE E->TE’
E’E’->ATE’E’->ATE’E’->?E’->?T T->FT’T->FT’
T’T’->?T’->?T’->MFT’T’->MFT’T’->?T’->?
F F->i F->(E)
A A->+ A->
M M->* M->/
3.设计堆栈和预测分析表的机内表示;
堆栈表示:
预测分析表的机内表示:
4. 设计并书写语法分析程序;
语法分析程序代码:
#include
#include
#include
#include
char A[20];
char B[20];
char v1[20]={'i','+','*','(',')','#'};
char v2[20]={'E','G','T','S','F'};
}
else
{ print();
print1();
printf("%c出错\n",x);
exit(1);
}
}
}while(finish==0);
}
5.调试并运行语法分析程序;
运行结果:输入i+(i*i)#运行结果如图一
输入(i+i)*i#运行结果如图二
记录成绩(涂改无效)合格□不合格□
【五、实验结果分析】
6. 实验结果分析
通过本次实验加深对预测分析LL(1)分析法的理解,能撑握编写LL(1)分析程序对任意输入的符号串进行分析。