您好,欢迎来到尔游网。
搜索
您的当前位置:首页语法分析-消除左递归

语法分析-消除左递归

来源:尔游网
语法分析-消除左递归

⼀:什么是左递归?

在⼆型⽂法(上下⽂⽆关⽂法中),若⼀个⾮终极符A有任何直接⽂法规则或者通过多个⽂法规则,推导出的句型最左边符号⼜会出现A,我们说这个⾮终极符A是左递归的。

⼆:左递归的类型

• 直接左递归:经过⼀次推导就能看出⽂法存在左递归例如:A->Aa|b ,A∈VN ,a,b∈(VN∪VT)*

• 间接左递归:经过多次推导才能看出⽂法存在左递归例如:A->Ba|β,B->Ar|β,A,B∈VN,a,β,r∈(VN∪VT)*

三:左递归的消除⽅法

• 直接左递归的消除:步骤:

1) 把所有产⽣式写成下列形式:

A→Aa1|Aa2……|Aan|b1|b2……|bm,其中每个a都不等于ε,每个b都不以A开头。2)变换候选式成如下形式:A→b1A’|b2A’……|bmA’A’ →a1A’|a2A’……|anA’|ε例如:

s->sb,|a可以替换为 s->as' ,s'->b,s'|ε• 间接左递归的消除:步骤:

1)把间接左递归化成直接左递归

2)按照直接左递归的消除⽅法进⾏消除例如:A->Bc∣dB->aA∣Ab

1)转换成直接左递归A->aAc∣Abc∣d

2)消除直接左递归A->aAcA′∣dA′A′->bcA′∣ε

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务