概念

  • 上下文无关文法
  • 语法制导翻译
  • 词法单元
  • 抽象语法树
  • 三地址中间代码
  • ε 表示空字符串
  • 文法二义性:多棵语法分析树可以生成一个给定的终结符号串

解释

  • 上下文无关文法的构成:
  1. 终结符号集合
  2. 非终结符号集合
  3. 产生式集合
  4. 开始符号
  • 推导:从开始符号出发,不断将非终结符号替换为某个产生式的体
  • 语法分析树:A -> XYZ
    《编译原理》 第二章 笔记
  • 二义性
  1. 二义性问题举例
    对于文法:string -> string - string | string + string | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    则表达式 9 - 5 + 2 可以用两种语法树表示
    《编译原理》 第二章 笔记
    左边的语法树对应的表达式为 9 - 5 + 2;
    右边的语法树对应的表达式为 9 - (5 + 2);
    于是上述文法具有二义性。
  2. 二义性问题解决方法:制定规则
    2.1. 规定运算符结合性:
    • 左结合: 当分量的左右都有运算符时,它属于左边。+, -, *, /都是左结合。例如1 + 2 + 3,会从左到右运算,所以2属于左边的加号。
    • 右结合: 当分量的左右都有运算符时,它属于右边。=, -=, += 都是右结合。例如a = b = c,等价于a = (b = c)
      下图展示了左结合运算符文法和右结合运算符文法的分析树《编译原理》 第二章 笔记
      2.2. 规定运算符优先级《编译原理》 第二章 笔记

相关文章: