文档介绍:实验名称:班级:10级软件工程2班班号:10级软件工程2班学号:姓名:张越2013年04月17日实验目的1、为初等函数运算语言构造LL(1)语法分析器。2、掌握LL(1)语法分析器的方法,加深对自上而下语法分析原理的理解。3、掌握设计、编制并调试LL(1)语法分析程序的思想和方法。2、、根据初等函数运算语言运算法则,将语法模式用上下文无关文法表达。注意运算的优先性,避免产生二义性文法。SàA?B;#SàC;A|εCà变量=BBàB+C|B-àC*D|C/D|DDàE|sin(E)|cos(E)|tg(E)|ctg(E)|lg(E)|ln(E)|log(E)|log(E,E)|E^EEà(B)|-E|变量|实数注:本文法的?前面是一些赋值语句(如:a=x+y;)?后面是一个算术表达式(如a+b*sin(y);以#结束)、将上述文法改写为LL(1)文法。 SàA?B;#AàC;A|εCà变量=BBàDEEà+DE|-DE|εDàFGGà*FG|/FG|εFàHI|cos(H)|sin(H)|tg(H)|ctg(H)|lg(H)|ln(H)|log(HJIà^H|εJà,H)|)Hà(B)|-H|变量|、根据LL(1)文法给出预测分析表。 (S)={ε变量?}First(A)={ε变量}First(B)={(-变量实数logsincostgctglgln}First(C)={变量}First(D)={(-变量实数logsincostgctglgln}First(E)={ε+-}First(F)={(-变量实数logsincostgctglgln}First(G)={ε*/}First(H)={(-变量实数}First(I)={ε^}First(J)={,)} (S)={#}Follow(A)={?}Follow(B)={;)}Follow(C)={;}Follow(D)={+-;)}Follow(E)={;)}Follow(F)={*/+-;)}Follow(G)={+-;)}Follow(H)={*/+-;)^,}Follow(I)={*/+-;)}Follow(J)={*/+-;)}+-*/^记号891011121314意义log实数+-*/^非终结符=,;()?#记号15161718192021意义=,;()?、根据预测分析表,给出解析LL(1)文法的递归下降子程序。 、本语法分析程序的输入是实验一生成的记号流;本程序需定义语法树的数据结构;语法分析的输出是一棵语法树。、当输入存在语法错误时,需给出语法错误的提示,指出语法错误发生的位置和错误类型。实验程序清单(包括词法分析部分)调试过程和运行结果程序的主要部分及其功能说明