怎么消除左递归、什么时候需要消除左递归—编译原理

系列文章戳这里

  1. 什么是上下文无关文法、最左推导和最右推导
  2. 如何判断二义文法及消除文法二义性
  3. 何时需要消除左递归
  4. 什么是句柄、什么是自上而下、自下而上分析
  5. 什么是LL(1)、LR(0)、LR(1)文法、LR分析表
  6. LR(0)、SLR(1)、LR(1)、LALR(1)文法之间的关系
  7. 编译原理第三章习题
  8. 词法分析、构建DFA、上下文无关文法、LL(1)分析、提取正规式
  9. 证明LL(1)、SLR(1)、LALR(1)文法

编译原理-怎么需要消除左递归,如何消除左递归

  • 系列文章戳这里
  • 什么是左递归
  • 什么时候需要消除左递归
  • 怎么消除左递归
    • 直接左递归
      • 举个栗子
    • 非直接左递归
      • 举个栗子
      • 举个栗子

什么是左递归

一个文法是左递归的,如果它有非终结符 A A A,对某个串 α α α,存在推导 A → ∗ A x A→*Ax AAx。自上而下的分析方法不能用于左递归文法,因此需要消除左递归。由形式为 A → A a A→Aa AAa的产生式引起的左递归称为直接左递归。

什么时候需要消除左递归

在进行自上而下的分析(比如 L L ( 1 ) LL(1) LL(1)分析时,构造预测分析器也是 L L ( 1 ) LL(1) LL(1)分析)需要消除左递归,因为自上而下的分析方法不能用于左递归文法。任何二义文法绝不是 L R LR LR文法。
怎么消除左递归、什么时候需要消除左递归—编译原理_第1张图片

怎么消除左递归

直接左递归

怎么消除左递归、什么时候需要消除左递归—编译原理_第2张图片

怎么消除左递归、什么时候需要消除左递归—编译原理_第3张图片

举个栗子

怎么消除左递归、什么时候需要消除左递归—编译原理_第4张图片
在这里插入图片描述
怎么消除左递归、什么时候需要消除左递归—编译原理_第5张图片

非直接左递归

举个栗子

在这里插入图片描述

在这里插入图片描述
怎么消除左递归、什么时候需要消除左递归—编译原理_第6张图片怎么消除左递归、什么时候需要消除左递归—编译原理_第7张图片

举个栗子

怎么消除左递归、什么时候需要消除左递归—编译原理_第8张图片
怎么消除左递归、什么时候需要消除左递归—编译原理_第9张图片

你可能感兴趣的:(笔记,知识回顾,编译原理,编译原理,左递归,语法分析)