如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第四章语法分析-自上而下分析二、后继符号集:LL(1)文法:如果一个文法满足以下条件:1、文法不含左递归。2、对文法中每一个非终结符A的各个产生式的候选首符集两两不相交。3、对文法中每一个非终结符A,若存在某个候选首符集包含,则First(A)Follow(A)=LL(1)中第一个L表明自左(Left)向右扫描输入串,第二个L表明分析过程采用最左(Left)推导,括号中的1表明只需向右看一个符号便可决定选择哪个产生式进行推导。二、可选集:第四章自顶向下语法分析方法语法分析是整个编译过程的核心部分,它完成的任务是:按照文法从源程序单词串(符号串)中识别各类语法成分,判断所给出的单词串是否是给定文法的正确句子,并为语义分析和代码生成做准备。4.1语法分析器的功能:p664.2不确定的自顶向下分析c三、对应最左推导:4.3确定的自顶向下分析思想(2)文法G[S]:SAp|BqAcA|aBdB|b输入串w=ccap4.4LL(1)文法4.5非LL(1)文法转换为LL(1)文法2.举例:二、消除左递归:2.消除间接左递归:先将间接左递归变为直接左递归,再按消除直接左递归的方法进行。(2)对每个非终结符号用排在它前面的其它非终结符号的产生式表示出来,并消除产生式中的直接左递归。举例:有文法G[S]:S→Qc|cQ→Rb|bR→Sa|a文法G[E]:E→TE’E’→+TE’|εT→FT’T’→*FT’|εF→(E)|i4.5预测分析程序——LL(1)分析器:(4)求非终结符号的Follow集:详见p79Follow(E)={),#}Follow(E’)={),#}Follow(T)={+,),#}Follow(T’)={+,),#}Follow(F)={*,+,),#}(2)表示:预测分析表可用一矩阵M表示,矩阵的行表示非终结符号,矩阵的列表示输入符号或#,矩阵的元素M[U,a]表示对非终结符号,当面临输入符号a时,它向下推导所应采取的产生式。3.分析过程:举例:分析输入串i+i是否为文法G[E](上例)的句子。