Ⅰ 編譯原理中的「程序的結構通常是由遞歸規則表示的」是什麼意思
遞歸都要包含兩個內容,第一是初值或者初始條件的選擇,第二才是遞歸關系的表達,也就是遞推表達式。如果(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是相同的非終結符
這兩種情況就叫作左遞歸。