期末复习——第四章

第四章 自上而下的语法分析

  • 法分析器的输入为单词符号,输出为语法单位。
  • 使用正规文法(线性文法/Chomsky3型文法)可以描述词法规则。使用上下文无关文法(2型文法,描述能力等同于不确定的下推自动机)来描述语法规则。
  • 上下文无关文法可以表示为一个四元式。由终结符、非终结符、开始符号和产生式集合构成。期末复习——第四章_第1张图片

4.1 语法分析器的功能

  • 语法分析的任务:分析一个文法的句子结构。
  • 语法分析器的功能:按照文法的产生式,识别输入符号串是否为一个句子。
  • 策略:自上而下、自下而上的语法分析。这两种方法反映了两种不同的语法树构造规则。
    期末复习——第四章_第2张图片
    期末复习——第四章_第3张图片

4.2 自上而下分析面临的问题

左递归和回溯。

  • 消除左递归:引入新的符号以改写文法。
    期末复习——第四章_第4张图片

  • 克服回溯:提取左公共因子。
    期末复习——第四章_第5张图片

LL(1)分析法

构造不带回溯的自上而下分析算法:

  • 要消除左递归。
  • 克服回溯。

4.3.1 左递归の消除

期末复习——第四章_第6张图片
期末复习——第四章_第7张图片
期末复习——第四章_第8张图片
注意上述的消除间接左递归过程中,最后改写的文法,可以看到Q和R已经是多余的了,即从开始符号S出发无法到达Q和R,因此改写文法时将Q和R的产生式删除即可。

4.3.2 消除回溯、提左因子

期末复习——第四章_第9张图片
期末复习——第四章_第10张图片

4.3.3 LL(1)分析条件

期末复习——第四章_第11张图片
可见,如果题目中要求判断一个文法是否为LL(1)的,应当先对其消除左递归,克服回溯。

4.4 递归下降分析程序的构造

期末复习——第四章_第12张图片
递归下降分析程序的构造在考试中考的可能性不大,一会儿在作业中看几个简单的例子以防万一。

  • ADVANCE:读入IP指向的输入符号到SYM中,把输入串指示器IP指向下一个输入符号。ADVANCE时机:遇到终结符时,可能需要用ADVANCE。
  • SYM:IP当前所指的输入符号。
  • ERROR:出错处理程序。

4.5 预测分析程序

4.5.1 预测分析程序的工作过程

预测分析程序或LL(1)分析法需要:

  • 总控程序。
  • 预测分析表M[A,a]矩阵,A是非终结符,a是终结符或#。预测分析表的构造以及FIRST、FOLLOW集合的构造大概率会捏在一起出一道大题。
  • 分析栈STACK用于存放文法符号。

4.5.2 预测分析表的构造

  • 构造FIRST(α)
    期末复习——第四章_第13张图片
    期末复习——第四章_第14张图片

  • 构造FOLLOW(A)
    期末复习——第四章_第15张图片
    注意第三条,是A → αB,将FOLLOW(A)的都加入FOLLOW(B)中。
    期末复习——第四章_第16张图片

  • 构造预测分析表
    期末复习——第四章_第17张图片
    注意,这里构造预测分析表时,只执行第二步或者第三步。即,如果执行了第二步,就不再执行第三步,vice versa。

  • 一个文法G的预测分析表M不含多重定义的入口,当且仅当该文法是LL(1)的。

LL(1)的含义:

  • 第一个L代表从左至右扫描输入符号串。
  • 第二个L代表生成输入串的一个最左推导。
  • 1表示在决定分析器的每步动作时,向前看一个符号。
    期中考试题:答案——√
    在这里插入图片描述
    LR(1)的R指的是最推导的逆过程,LL(1)的L指的就是输入串的一个最推导。
  • 判断是否为LL(1)文法:
    期末复习——第四章_第18张图片
    或预测分析表没有多重定义的入口(一个小格子里只填一项)。

4.6 LL(1)分析中的错误处理

作业

4.1 见上面消除左递归部分

4.2 见上面克服回溯部分

4.3 写递归下降程序

期末复习——第四章_第19张图片
期末复习——第四章_第20张图片

4.4 在已知预测分析表的情况下写递归下降子程序

期末复习——第四章_第21张图片
期末复习——第四章_第22张图片
期末复习——第四章_第23张图片

期中考试相关

判断题

2:应该放在第二章,前面漏掉了,这里补上。答案:×

在这里插入图片描述
原因:最左推导和最右推导大概率是不同的,但二者产生的语法树有可能是相同的(是无二义文法时)。

5:LR(1)的R表示最右推导的逆过程,LL(1)的第二个L表示产生式的一个最左推导。√在这里插入图片描述

6:×。二义文法就无法改写为LL(1)文法,LL(1)文法一定是无二义的。

在这里插入图片描述

8:√

在这里插入图片描述

9:LEX是词法分析器自动生成器,YACC是语法分析器自动生成器。√在这里插入图片描述

选择题

13:选A

期末复习——第四章_第24张图片

17:选D。寻找可规约串是自下而上语法分析的任务。

在这里插入图片描述

填空题

3:

在这里插入图片描述
答案为:
S → (S)S’ | iS’
S’ → TS’ | ε

综合题:16分

期末复习——第四章_第25张图片

期末复习——第四章_第26张图片
注意:构造预测分析表时,(2)和(3)只执行其中之一。即,如果A→α中,α的FIRST集合中有ε,优先执行(3)而不执行(2)。如本题的S → D就是这样,由于ε ∈ FIRST(D),故仅将S → D加入到FOLLOW(S)对应的#符号下即可。因此,这道题其实极大的提升了难度,期末有可能再次出现原题。

你可能感兴趣的:(编译原理,北方工业大学,编译原理,期末考试)