实验题目:LL1分析法
免费下载,不客气班级:
学号:
姓名:
EditedbyMagicYa
g
完成日期:2013528
f一、实验目的
通过完成预测分析法的语法分析程序,了解预测分析法和递归子程序法的区别和联系。使学生了解语法分析的功能,掌握语法分析程序设计的原理和构造方法,训练学生掌握开发应用程序的基本方法。有利于提高学生的专业素质,为培养适应社会多方面需要的能力。
二、实验内容
根据某一文法编制调试LL(1)分析程序,以便对任意输入的符号串进行分析。构造预测分析表,并利用分析表和一个栈来实现对上述程序设计语言的分析程序。分析法的功能是利用LL(1)控制程序根据显示栈栈顶内容、向前看符号以及LL(1)分析表,对输入符号串自上而下的分析过程。文法为(1)ETG(2)GTGTG(3)Gε(4)TFS(5)SFSFS(6)Sε(7)FE(8)Fi
三、数据结构及生成的算法描述
事先已经构造好的表:V
数组非终结符表Vt数组终结符Gr数组文法事先定义的表及变量:非终结符按照在非终结符中的位置与first集follow集对应
ffi二维数组first集为真表示该终结符在该行对应的非终结符的first集中fo二维数组follow集为真表示该终结符在该行对应的非终结符的follow集中M二维数组预测分析表用到的方法:i
tori
tiStri
gs返回最近的在其右边一个“”位置i
tv
charc返回c在非终结符表中的位置i
tvtcharc返回c在终结符表中的位置voidaddfiStri
gsi
tj求关于某一个产生式的first集voidfirstcharv求非终结符c关于该文法的first集,first调用addfivoidfir求所以非终结符的first集,fir调用firstvoidaddfoStri
gsi
tj求关于某一个产生式的follow集voidfollowcharv求非终结符v关于该文法的follow集,follow调用addfovoidfol求所以非终结符的follow集fol调用followvoidMMi
tji
tiStri
gsi
tm将某一个产生式填入预测分析表中voidbuild_M构造预测分析表,build_M调用MMvoidisrightStri
gs分析一个符号串是否符合该文法
四、算法流程图
f五、源程序代码和测试的结果packagepackage_two
importjavautilimportjavaio
publicclassLLcharV
ETGFS非终结符charVtiε终结符非终结符按照在非终结符中的位置与first集follow集对应boolea
fi
ewboolea
V
le
gthVtle
gth1first集为真表示该终结符在该行对应的非终结符的first集中boolea
fo
ewboolea
V
le
gthVtle
gth1follow集为真表示该终结符在该行对应的非终结符r