编译原理中单线箭头->和双线箭头=>有什么区别

我在做这道题的时候,
在这里插入图片描述
考虑着用->来做过程推导,但是老师纠正是说要用=>,所以我对于->和=>有什么区别产生了疑问。查找资料后,总结如下:

  1. 单线箭头 -> 用在规则(产生式)中,称作“定义为
    ->:是为了来组成一条文法中的规则的。
    那么->左右的可以是什么样的符号呢?
    我们要先了解下文法的四元组的表达方式,G(VN,VT,P,S),其中P代表的是规则,形如:α->β。
    其中α,β属于(VN∪VT) (✱代表是VN∪VT集合的闭包)
    (在VN和VT分别代表的是该文法中非终结符的集合,终结符的集合)
    (在编译原理的集合的闭包概念:表示字母表Σ上所有有穷长串的集合)
    所以就是说,->前后是
    非终结符和终结符相连接的符号串(当然也可以是仅有非终结符或仅由终结符组成的字符串)

  2. 而双线箭头(=>) 用在推导中,称作“推导”
    =>:是为了来“定义文法所产生的语言”
    那么=>左右的又可以是什么样的符号呢?
    根据《编译原理》(清华大学王生元第三版)书中,第22页倒数第四行的定义:
    “还需要引入推导的概念,及定义V中符号之间的关系”
    这里的V指的其实就是(VN∪VT)
    所以说明推导(=>)两边的符号串跟定义为(->)两边的符号串是相同的;

总结:

  1. 定义为(->)和推导(=>)这两种符号不同在于:使用场合不同,具体如下:
    定义为(->):文法中规则(产生式)的定义上。
    推导(=>):定义文法所产生的语言。
  2. 但是他们两边的符号串是相同种类的。

最后把上面的题目解答过程附上:
其中L(G)代表的是文法(G)所产生的语言

在这里插入图片描述
解答思路:
开始符S开始推导,推导出文法所代表的语言。
首先我们要先明白语言是什么?
根据编译原理中语言的定义:文法所描述的语言是该文法一切句子的集合。(大白话就是说语言是文法中句子的全集)
既然语言是集合,所以最后推导的解惑

解答过程:
S=>aSBE
=>a(n-1)S(BE)(n-1)    根据(1)推导
=>an(BE)n       根据(2)推导
=>anBnEn
=>anbnEn
=>anbnen

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值