编译原理之最左推导和最右推导

1.定义
  • 最左推导:任何一步α => β都是对阿尔法中的最左非终结符进行替换
  • 左右推导:任何一步α => β都是对阿尔法中的最右非终结符进行替换
2.抛出一个小栗子

文法G(E)为:

  • E -> T | E + T |E - T
  • T -> F | T * F | T / F
  • F -> (E) | i

给出i + i * i 的最左推导和最右推导。

思考三分钟再往下看哦~
这里写图片描述

解析:
最左推导
从文法的起始符号开始:
E -> E + T
-> T + T
-> F + T
-> i + T
-> i + T * F
-> i + F * F
-> i + i * F
-> i + i * i
最右推导
从文法的开始符号开始:
E -> E + T
-> E + T * F
-> E + T * i
-> E + F * i
-> E + i * i
-> T + i * i
-> F + i * i
-> i + i * i

3. 小练习

文法G(E)为:

  • E -> T | E + T |E - T
  • T -> F | T * F | T / F
  • F -> (E) | i

给出i * (i + i)的最左推导和最右推导。

此处思考三分钟。。
这里写图片描述

解析:
最左推导
从文法的起始符号开始:
E -> T
-> T * F
-> F * F
-> i * F
-> i * (E)
-> i * (E + T)
-> i * (T +T)
-> i * (F + T)
-> i * (i + T)
-> i * (i + F)
-> i * (i + i)
最右推导
从文法的开始符号开始:
E -> T
-> T * F
-> T * (E)
-> T * (E + T)
-> T * (E + F)
-> T * (E + i)
-> T * (T + i)
-> T * (F + i)
-> T * (i + i)
-> F * (i + i)
-> i * (i + 1)

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值