语法分析消除左递归_什么是左递归文法

语法分析消除左递归_什么是左递归文法一:什么是左递归? 在二型文法(上下文无关文法中),若一个非终极符A有任何直接文法规则或者通过多个文法规则,推导出的句型最左边符号又会出现A,我们说这个非终极符A是左递归的。二:左递归的类型 • 直接左递归:经过一次推导就能看出文法存在左递归 例如:A->Aa|b ,A∈VN ,a,b∈(VN

语法分析消除左递归_什么是左递归文法

一:什么是左递归?
在二型文法(上下文无关文法中),若一个非终极符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∣d
B->aA∣Ab
1)转换成直接左递归
A->aAc∣Abc∣d
2)消除直接左递归
A->aAcA′∣dA′
A′->bcA′∣ε

今天的文章语法分析消除左递归_什么是左递归文法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/49801.html

(0)
编程小号编程小号
上一篇 2023-09-02 19:17
下一篇 2023-09-02

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注