编译原理学习笔记(一)first follow select

//e = epision 空字符串 打不出来。。

’从文法开始做笔记

直接左递归需要被消除,否则会无限循环回溯。

消除方法:A→Aα等价于A→βA',A'→αA'|e【实质上是把左递归转换成了右递归】

此方法的一般形式:有A→Aα|β,将所有终结符开头的A→β后面添加新的非终结符A‘,得到A→βA’,A’=αA‘|e

此方法的缺点:引入非终结符和e产生式。

消除左递归算法(输入不含A→A和e产生式的文法,输出等价无左递归文法):

对每一个非终结符Am,对1到i-的每个j,将每个形如Ai→Ajγ替换为Ai→λ1γ,...,其中Aj→λ1,2,...k即所有的Aj产生式

人话:对每个不是结束符的符号X,查找X会产生什么,它的产生式没有非终结符的话就代入存在X的A→Xα,有非终结符X‘的话就继续查找这个X'产生什么,递归调用上面的逻辑。经此以往循环查找查找查找直到所有的符号X都被转化成终结符。

/*——————

____________*/

计算机使用递归下降分析,即对每一次的分析都进行判定,如果是非终结符就调用自身,是终结符就指针+1.但是这样的会存在回溯现象,针对这种情况可以进行预测分析。

S_文法:每个产生式的A→都以终结符开始,同一个非终结符X各个候选式子X→的首终结符都不同。

人话:A→aX|bX',X→a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值