自顶向下语法分析方法:消除左递归

直接左递归

形如A->Aβ,A∈非终结符,β∈终结符∪非终结符。

消除直接左递归

一般形式:
A->Aα1|Aα2|...|Aαm|β1|β2|...|βn
其中,αi(1≤i≤m)不等于ε,βj(1≤j≤n)不以A开头,消除直接左递归改写为:
A->β1A'|β2A'|...|βnA'
A'->α1A'|α2A'|...|αmA'|ε

例如:

文法:
S->Sa
S->b
消除直接左递归:
S->bS'
S'->aS'|ε

间接左递归

形如A->Bβ,B->Aα,A,B∈非终结符,α,β∈终结符∪非终结符。

消除间接左递归
先通过产生式非终结符置换,变为直接左递归,然后按直接左递归方法消除

例如:

文法:
(1)A->aB
(2)A->Bb
(3)B->Ac
(4)B->d
用(1)、(2)的右部置换(3)中的非终结符A,得到:
B->aBc
B->Bbc
B->d
消除直接左递归:
B->aBcB'|dB'
B'->bcB'|ε
把原来的A产生式加入,最终文法为:
A->aB
A->Bb
B->aBcB'|dB'
B'->bcB'|ε
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值