第四章 自上而下分析
内容导图:
重点内容:
自上而下的分析:文法的起始符出发进行句子的推导
自下而上的规约:句子本身出发,进行归约,看能否把句子规约为到起始符
结果:构造一颗语法树
P→Pα|β
非直接左递归:其中β不以P开头,α不为ε
P→βP’
P’→αP’|ε
将间接左递归改造为直接左递归
将文法中所有如下形式的产生式:
Pi →Pjγ|β1|β2|…|βn
Pj→δ1|δ2|δ3|…|δk
改写成:
Pi →δ1γ|δ2γ|δ3γ|…|δkγ|β1|β2|…|βn
如果α→ε,则ε∈FIRST(α)
如果S →A,则#∈FOLLOW(A)
递归下降分析器:
当一个文法满足LL(1)条件时,我们就可以构造一个不带回溯的自上而下分析程序,
这个分析程序由一组(可能的)递归程序组成,
每个过程对应文法的一个非终结符。
这样一个分析程序称为递归下降分析器。
实现LL(1)分析的另一种有效方式是使用一张分析表和一个栈进行联合控制
例题:
心得体会:
第四章是自上而下分析的具体步骤, 本节要掌握对给定文法构造出每个非终结符的FIRST和FOLLOW集合。这也是画出预测分析表的必须经历的一步,只有掌握这两个结合的构造,才能更好地为后面的步骤服务。这一章的题目与上一章相比,没有那么繁琐的画图,但是思维得更要活跃起来。