语法分析自顶向下的分析

语法分析自顶向下的分析

ID:28602612

大小:62.50 KB

页数:4页

时间:2018-12-11

语法分析自顶向下的分析_第1页
语法分析自顶向下的分析_第2页
语法分析自顶向下的分析_第3页
语法分析自顶向下的分析_第4页
资源描述:

《语法分析自顶向下的分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、语法分析——自顶向下的分析重点与难点重点:自顶向下分析的基本思想,预测分析器总体结构,预测分析表的构造,递归下降分析法基本思想,简单算术表达式的递归下降分析器。难点:FIRST和FOLLOW集的求法,对它们的理解以及在构造LL(1)分析表时的使用。递归子程序法中如何体现分析的结果。基本要求掌握语法分析、2型文法的概念和自顶向下分析的基本思想,预测分析器总体结构,预测分析表的构造,递归下降分析法基本思想,简单算术表达式的递归下降分析器。熟练掌握推导、FIRST集和FOLLOW集的求法、消除左递归、提取左因子、

2、LL(1)文法、文法的改写、递归子程序法、预测分析法。例题解析例1求表达式文法的语法符号的FIRST集和FOLLOW集表达式文法:E→TE'E'→+TE’

3、εT→FT'T'→*FT’

4、εF→(E)

5、idFIRST(F)={(,id}FIRST(T)=FIRST(F)={(,id}FIRST(E)=FIRST(T)={(,id}FIRST(E')={+,ε}FIRST(T')={*,ε}FIRST(+)={+},FIRST(*)={*}FIRST(()={(}FIRST())={)}FIRST(id)={id

6、}FOLLOW(E)={#,)}FOLLOW(E')=FOLLOW(E)={#,)}FOLLOW(T)=FIRST(E’)∪FOLLOW(E)∪FOLLOW(E’)={+,),#}FOLLOW(T')=FOLLOW(T)={+,},#}FOLLOW(F)=FIRST(T’)∪FOLLOW(T)∪FOLLOW(T’)={*,+,},#}例2消除下述文法的左递归。S→Ac

7、cA→Bb

8、bB→Sa

9、a【解】先将间接左递归,变成直接左递归4将B的定义代入A产生式得:A→Sab

10、ab

11、b,将A的定义代入S产生式得:S

12、→Sabc

13、abc

14、bc

15、c采用引进新的非终结符的方法消除直接左递归:S→abcS’

16、bcS’

17、cS’S’→abcS’

18、ε删除“多余的”产生式:A→Sab

19、ab

20、b和B→Sa

21、a得到文法G[S]:S→abcS’

22、bcS’

23、cS’S’→abcS’

24、ε例3已知文法G: S→(L

25、a L→S,L

26、)(1)构造文法G的预测分析表。(2)若输入串为“(a,)”,请给出语法分析过程。【解】(1)1)求各非终结符的FISRT集和FOLLOW集:FIRST(S)={(,a)FIRST(L)={a}ÈFIRST(S)={(,

27、),a}FOLLOW(S)={’,’,#}FOLLOW(L)=FOLLOW(S)={’,’,#}2)预测分析表:(a,}#SS→(LS→aLL→S,LL→S,LL→)(2)对输入串“(a,)”的分析处理过程如表1所示。表1对输入串“(a,)”的分析过程步骤分析栈输入串所用产生式0#S(a,)#1#L((a,)#S→(L2#La,)#3#L,Sa,)#L→S,L4#L,aa,)#S→a5#L,,)#6#L)#7#))#L→)8##例4给定文法G=({i,d,'(',')'},{E,A},E,P)其中P:E→ 

28、iAE→ EAA→iA→ dA→(E)(1)消除左递归;4(2)计算改写后文法中各非终结符的FIRST集和FOLLOW集;(3)构造改写后文法的预测分析表;该文法是LL(1)文法吗?。【解】(1)消除左递归后的文法为:E→iAE'E'→e

29、AE'A→iA→dA→(E)(2)各非终结符的FISRT集和FOLLOW集FIRST(E)={i}FIRST(E')={i,d,(,e)FIRST(A)={i,d,()FOLLOW(E)={),#}FOLLOW(E')={},#}FOLLOW(A)={i,d,(,),#}

30、(3)改写后文法的预测分析表:id()#EE→iAE'E'E'→AE'E'→AE'E'→AE'E→eE→eAA→iA→dA→(E)预测分析表中无多重入口,因此该文法是LL(1)文法.例5if语句的原始文法S→ifEthenS

31、ifEthenSelseS

32、other存在左因子ifEthenS,改写此文法消除左因子。.【解】引进非终结符S’S'→ε

33、elseS提取左因子:S→ifEthenSS’

34、other改写后的文法:S→ifEthenSS’

35、otherS'→ε

36、elseS例6构造简单算术表达式的分析器【解】

37、E的子程序(E→T(+T)*)procedureE;beginT;T的过程调用whilelookhead='+'dobegin当前符号等于+时match(‘+’);处理终结符+TT的过程调用endend;lookhead:当前符号4T的子程序(T→F(*F)*)procedureT;beginF;F的过程调用whilelookhead='*'thenbegin当前符号等于*时match('*');处理终结符*FF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。