跳转至

基本思想

  • 从要分析的终结符串开始规约
  • 每一步找出和某个产生式右部匹配的子串,替换成产生式左部
  • 直到规约至开始符号

非确定性

  • 每一步规约中:选择哪一个产生式、匹配哪一个位置的子串,是非确定的
  • 改进方法:选择可规约串进行规约
  • 句型:推导过程中的中间字符串(一定可由开始符号导出)
  • 短语:句型中,某个非终结符可以生成的字符串
  • 短语一定是:当前句型的子串,且可以由一个非终结符生成

短语与句型

直接短语

  • 可以理解为:当前句型的某个子串,这个子串可以由一个非终结符直接生成

直接短语 1

直接短语 2

句柄

  • 可以理解为:使用句柄规约出的句型,一定是最左规约、最右推导
  • 但句柄也是不唯一的,例如遇到了二义文法

句柄 1

句柄 2

移进—规约分析

  • 通过一个下推栈,和一个基于有限状态控制的分析引擎
  • 分析引擎会有如下动作:规约、移进一个输入、发现语法错误、分析成功
  • 两类冲突:
  • 移进—规约冲突:不知道下一步应该移进还是规约
  • 规约—规约冲突:不知道应该选择哪个产生式规约

LR 分析

含义

  • L:从左到右扫描输入单词序列
  • R:产生的是最右推导的逆过程(最左规约)
  • LR(0):向前查看 0 个符号

LR 分析表

LR 分析表 1

LR 分析表 2


相关笔记