《编译原理》 第二章 笔记

概念

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

解释

  • 上下文无关文法的构成:
  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. 规定运算符优先级在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值