【课前思考】
  ◇ 复习自顶向下和自底向上语法分析思想的区别
  ◇ 自底向上分析方法是一种移进-归约过程
  ◇ 算符优先分析法是如何确定可归约串的?
  ◇ 什么是规范推导和规范归约?它们之间有什么关系?
  ◇ 什么是规范句型?
  ◇ 什么是规范句型的句柄?
  ◇ 移进-归约过程是当分析的栈顶符号串形成句柄时就采取归约动作
  ◇ 自底向上分析法的关键问题是在分析过程中如何确定句柄。
  ◇ 如何确定一个输入符号串是否是所给文法的句子?
【学习目标】
  本章将介绍自底向上分析的另一种方法,即LR分析法。
  ◇ 理解LR分析法的基本思想
  ◇ 理解可归前缀和子前缀概念
  ◇ 理解识别活前缀的有限自动机概念
  ◇ 掌握LR分析器的构造思想和方法
  ◇ 对给定的文法能构造LR(0)、SLR(1)、LALR(1)、LR(1)四种分析器,并能判断所给文法是四种分析器的哪几类。
  ◇ 对给定的输入符号串能用构造的分析器判断该输入串是否是所给文法的句子
  ◇ 了解某些二义性文法在LR分析中的应用。
【学习指南】
  LR分析法的归约过程是规范推导的逆过程,所以LR分析过程是一种规范归约过程。LR分析法正是给出一种能根据当前分析栈中的符号串(通常以状态表示)和向右顺序查看输入串的K个(K≥0)符号就可唯一地确定分析器的动作是移进还是归约和用哪个产生式归约,因而也就能唯一地确定句柄。其中LR(0)分析器是在分析过程中不需向右查看输入符号,因而它对文法的限制较大,然而,它是构造其它LR类分析器的基础。因此,首先应学好LR(0)项目集规范族构造的基本原理和方法。当K=1时,已能满足当前绝大多数高级语言编译程序实现的需要。SLR(1)分析是为学习LR(1)分析做准备,LR(1)项目集族的构造是LALR(1)分析器的构造原理和基础。LALR(1) 分析器是当前大多数高级程序设计语言编译程序所采用的语法分析技术,也是编译程序语法分析器自动构造工具YACC(将在第13章介绍)的实现基本原理。由此,LR(0)、SLR(1)、LALR(1)、LR(1)四种分析器的构造方法都必须深入理解和掌握。
【难 重 点】
  ◇ 可归前缀和子前缀概念
  ◇ 识别活前缀的有限自动机概念
  ◇ 对可归前缀为规范归约的句柄的理解
  ◇ 构造LR(1)项目集族时搜索符的计算
  ◇ LR分析器的关键部分是分析表的构造
  ◇ 对给定的文法能构造LR(0)、SLR(1)、LALR(1)、LR(1)四种分析器
  ◇ 当一个文法能构造出不含移进-归约或归约-归约冲突时的LR(0)/ SLR(1)/ LALR(1)/ LR(1)分析表时,称这个文法为LR(0) / SLR(1)/ LALR(1)/ LR(1)文法。
  ◇ 对给定的文法能判断是四种LR类文法的哪几类
  ◇ 了解某些二义性文法在LR分析中的应用
【知识结构】