导航:首页 > 源码编译 > 左递归消除编译原理

左递归消除编译原理

发布时间:2025-02-21 13:08:07

❶ 【编译原理】自顶向下LL(1)分析中,消除左递归和提取左因子的目的是什么

通常LL(1) 是以函数递归调用来实现的
如文法: A -> A + a | a
代码实现则为:
function A()
{
A();
match('+');
Term(a);
}
这样你可以看得出死循环了吧...?
将文法消除左递归后
A -> aA'
A' -> +aA'
则可以避免这一问题
提出公因式 就像楼上说的一样,避免程序回溯,消除二义性.
楼上高手啊,求搞基.

❷ 编译原理 G[S]: S::=a|b|(T) T::=T,S|S怎么消去左递归

T::=T,S|S 转化为以下两个式子
T::=SK
K::=,SK|空
这样就消除左递归了~
不懂的可以继续问我~

❸ 编译原理的消除左递归是怎么回事啊

如果一个CFG像这样
A -> Ab
A -> e

就是有左递归,语法分析里的递归下降法和LL(1)就不能处理啦,因为程序会陷入递归而无法前进。
而CFG
A -> bA'
A' -> bA'|e
和前面一个表达的语言是一样的,但所有语法的第一项都是终结符,就消除了左递归。

有消除左递归的算法,一般编译原理书上会有介绍,不是很复杂。

❹ 编译原理左递归消除

这些题很难啊!!!
都有间接左递归。要先变成直接左递归,然后消除掉。
--------------------
G3.1
S->SA|Ab|b|c
A->Bc|a
B->Sb|b
--------------------
间接左递归转直接左递归
B代入A:A ->(Sb|b)c|a -> Sbc|bc|a
A代入S:S -> S(Sbc|bc|a)|(Sbc|bc|a)b|b|c -> SSbc|Sbc|Sa|Sbcb|bcb|ab|b|c
消除直接左递归
S->bcbS'|abS'|bS'|cS'
S'->SbcS'|bcS'|aS'|bcbS'|ε
S'还是有直接左递归,继续消除
S'->bcS'T|aS'T|bcbS'T
T->bcS'T|ε
最后,这题答案就是S,S',T的产生式

--------------------
下面两题更难了,上一题反复代入还能把其他非终结符消掉,下面两个文法都是最后代入还剩下两个非终结符反复迭代,佛了!
G3.2
E->ET+|T

T->TF*|F

F->E|i
--------------------
F代入T: T->T(E|i)*|(E|i)->TE*|Ti*|E|i
T代入E:

--------------------
G3.3
S->V_1

V_1->V_2|V_1 2 V_2

V_2->V_3|V_2 + V_3
V_3->V_1 * |(
这些字母我都不认识了,换一下
S->A|SiA
A->B|A+B
B->S*|(
--------------------
B代入A:A->(S*|()|A+(S*|()->S*|(|A+S*|A+(
A代入S:

--------------------

❺ 编译原理中的左递归

1.A->Aa
2.A->Ba
B->Ab (A和B属于非终结符,a和b属于终结符)

通俗点讲:左递归就是情况1所说的“->”两边都含有同一个非终结符;
情况2所说的A->Ba中“->”后面的B 与 B->Ab中“->”前面的B是相同的非终结符
这两种情况就叫作左递归。

阅读全文

与左递归消除编译原理相关的资料

热点内容
数据库查询系统源码 浏览:607
php5314 浏览:347
完美国际安装到哪个文件夹 浏览:661
什么app可以扫一扫做题 浏览:531
程序员编码论坛 浏览:914
淘点是什么app 浏览:650
中国高等植物pdf 浏览:446
51单片机时间 浏览:172
后台如何获取服务器ip 浏览:256
单片机流水灯程序c语言 浏览:226
程序员第二职业挣钱 浏览:229
运行里怎么输入服务器路径 浏览:831
pythonstepwise 浏览:499
刘一男词汇速记指南pdf 浏览:54
php认证级别 浏览:360
方舟编译啥时候推送 浏览:1001
php手机验证码生成 浏览:667
哲学思维pdf 浏览:7
凌达压缩机有限公司招聘 浏览:526
weblogic命令部署 浏览:30