Ⅰ 编译原理中的“程序的结构通常是由递归规则表示的”是什么意思
递归都要包含两个内容,第一是初值或者初始条件的选择,第二才是递归关系的表达,也就是递推表达式。如果(1)和(2)没有,递归定义是不完整的。
你肯定学过fibonacci数列以及用递归程序编写fibonacci数列,还有阶乘的例子。如果不定义当n=1时,函数返回值是多少,那么函数递归会进入死循环。这里定义n=1的返回值,和上述的(1)和(2)是一个道理。
Ⅱ 编译原理中提到的递归规则是什么
逆归就是反编译,可以看成是编译的逆过程。
Ⅲ 编译原理,递归下降子程序语法分析
没学过编译原理,看描述,是让写一个脚本执行软件。
终结符我查了下,就是不可再分的。比如iε。
输入是EGTSFI*/ε组成的字符串。
规则需要预处理。注意转意符在字符串中的效果。因为有/字符。
不会c或c++,只会c#。你可以到贴吧发帖。强人工智能吧 就挺好。算法吧有点乱。
最重要的,不要钱。
Ⅳ 编译原理中 左递归具体解释是什么
定义:
"一个文法是左递归的,若我们可以找出其中存在某非终端符号A,最终会推导出来的句型(sentential form)里面包含以自己为最左符号(left-symbol)的句型"
即
A -> Aa 或
A -> Ba
B -> A
两种形式的文法.
Ⅳ 编译原理 递归下降分析器
自顶向下分析法(递归下降分析程序构造)
E-->T/E+T
T-->F/T*F
F-->i/(E)
步骤 栈 输入字符串 状态
0 #E i1*(i2+i3)# 初始化
1 #T i1*(i2+i3)# E-->T
2 #T*F i1*(i2+i3)# T-->T*F
3 #T*i i1*(i2+i3)# F-->i
4 #F* *(i2+i3)# 匹配
5 #F (i2+i3)# 匹配
6 #(E) (i2+i3)# E-->(E)
7 #(E i2+i3)# 匹配
8 #(E+T i2+i3)# E-->E+T
9 #(E+F i2+i3)# T-->F
10 #(E+i i2+i3)# F-->i
11 #(E+ +i3)# 匹配
12 #(E i3)# 匹配
13 #(T i3)# E-->T
14 #(F i3)# T-->F
15 #(i i3)# F-->i
16 #( )# 匹配
17 # # 接受
所以可以写出
PROCEDURE E
BEGIN
T;
WHILE SYM='+' THEN ADVANCE;T END
END;
PROCEDURE T
BEGIN
F;
WHILE SYM='*' THEN ADVANCE;F END
END;
PROCEDURE F
BEGIN
IF SYM='i' THEN ADVANCE END
ELSE
IF SYM='(' THEN
BEGIN ADVANCE;E;
IF SYM=')' THEN ADVANCE;
ELSE ERROR;END
END;
Ⅵ 高分求编译原理递归下降语法分析设计原理
lz,最好改成这种形式,不要直接消左递归:
E -> TAE
T -> FMT
F -> (E) | i
A-> +|- M->*|/
Ⅶ 最近对编译原理感兴趣,问下这个消除直接左递归文法是什么意思:P→Pα|β
寂寞是人生的一道风景线,如果没有了寂寞,那人生是不完整的。所以你要正视所谓的寂寞,不能成为寂寞的奴隶,与寂寞一起共同快乐生活才是最重要的。
寂寞的时候,我会选择与音乐一起,会令我愉快度过每一天。
Ⅷ 编译原理文法问题,急急急
第一题
S->AB
A->aA'b
A'->aA'b|ε
B->B'
B'->dB'|ε
----------------------
第二题
S->aS'b
S'->aS'b|D
D->dD|ε
----------------------
第三题
最左推导的话,我认为要先消除左递归才行(把左递归转成右递归),消除之后:
N->DN'
N'->DN'|ε
D->0|1|2|...|9
最左推导为 N->DN'->2N'->2DN'->25N'->25DN'->258N'->258
规范推导(最右推导)为N->ND->N8->ND8->N58->D58->258
----------------------
第四题
构造一下语法树就知道了。直接短语是深度为2的节点(根节点是深度0)。短语是深度为2的节点代入深度为1的产生式中。句柄是所有直接短语中最左的那个。
1.baaa
>>>
_________S
_______/___\
______A_____B
_____/__\____|
____A___a___a
___/__\
__b___B
_______|
______a
直接短语为 Aa、a
短语为 Aaa
句柄为 Aa
2.bBaa
>>>
_________S
_______/___\
______A_____B
_____/__\____|
____A___a___a
___/__\
__b___B
直接短语为 Aa、a
短语为 Aaa
句柄为 Aa
Ⅸ 编译原理左递归消除
这些题很难啊!!!
都有间接左递归。要先变成直接左递归,然后消除掉。
--------------------
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是相同的非终结符
这两种情况就叫作左递归。