1 实验目的
本实验的目的是在词法分析程序的基础上,运用LL(1)语法分析方法,手动构造LL(1) 分析构造标,程序实现对输入的语句进行分析,并输出推导过程。
2 内容描述
本实验主要采取自顶向下的语法分析方法,根据文法构造预测分析表,再根据预测分析表进行语法分析。程序由Java编写。程序读取一个java文件,运用词法分析程序得到TOKEN序列,根据token对其进行语法分析,最后输出产生式序列。
定义的具体文法有:
-
形如id = 4*5+6的赋值语句,作为id,右为数学运算的式子。
-
if-else语句(必须有else且语句不能有大括号)
-
包含比较符的条件判断语句,形如a > 5
3 思路方法
-
自定义要分析的文法
-
对文法进行预处理(消除左递归与二义性)
-
构造预测分析表
-
基于分析表进行语法分析
-
语法分析模块:根据输入队列当前读头下的字符与状态栈的第一个元素进行分析,若是终结符则进行匹配,否则产生子项,循环至处理至输入队列最后一个字符