1.实验目的
通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。
2. 实验内容
根据某一文法编制调试 LL ( 1 )分析程序,以便对任意输入的符号串进行分析。
构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。
分析法的功能是利用 LL(1)控制程序根据显示栈栈顶内容、向前看符号以及 LL(1)分析表,对输入符号串自上而下的分析过程。
3. LL(1)分析法实验设计思想及算法
本LL(1)分析器只针对现有提供的LL(1)文法,对于左递归文法并没有进行处理。本分析器实现功能如下:
1.提供精致的GUI界面显示各类信息。
2.对输入的文法进行读取,并在GUI界面显示文法,同时保存在相应的数据结构中。
3.能够计算并显示每一个非终结符的FIRST集合。
4.能够计算并显示每一个非终结符的FOLLOW集合。
5.能够根据已求得的FIRST集和FOLLOW集构建预测分析表。
6.根据分析表对输入的字符串进行分析(总控程序)。
7.能够显示每一步分析过程,并能对相应的错误进行处理。
4. 源程序关键代码(Python实现)
// 包含创建First集函数、创建Follow集函数、构建预测分析表函数、报错程序函数、记录步骤函数、文本分析器函数
# 创建first(字符串形式)
def creat