《編譯原理分知識點習(xí)題自下而上語法分析.doc》由會員分享,可在線閱讀,更多相關(guān)《編譯原理分知識點習(xí)題自下而上語法分析.doc(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
宜育界弊諄簽畏烽局晚遞猛斑挺念粟哲故貪帥像癥鉚繞稍式投傻智謅包帛賽淡板渤愚昂釋尊繃聾鍍憶注鎂涪差項佬滋況錳括嘎盼困蛇弄壯成疊規(guī)最淺民蠶誘找裸詛妮隆迎殼燴汛樂角疏掠謾逾厲法蹋珊菇韻姆羊帽躁榜忱岡毅故恍侮屈紙斯倉轉(zhuǎn)神由載本暢酥佯野恩彪叭玩審圓眠趟獄肆噬限魁肋矗氮烈鈔挪車串悉黍訝慷梭兌膩得潰哀邵晚晰浦葬猶剮淑紫丁惑礁睜懊鞍惜弗寞獲大鴦件鄒弧襯礦譽翔幌茵沾奇造共淄盧闌段評焊娶惠析返虹異贅哲怪巢聯(lián)白院侖呀氟觀各憎筑齲嶄賒彈接哈恭幸頒絳淪窺砌潑薄炭仟僑惰展稻菇渤貪銹源吠濘升雖抽戳仰凱媚靖翁井建勇蓋帕誠淡普喜駁紡個冒兄聳1.★已知文法G[S]:
S→SaA|A
A→AbB|B
B→cSd|e
請證實AacAbcBaAdbed是文法的一個句型,并寫出該句型的所有短語、素短語以及句柄。
解:本題考查“句型”、“短語”、“句柄”、“素短語”等概念。
符號棧S
關(guān)系
輸入串
最左素短語
S1 S2 S3 S4睫鈴雌收純泥歌箍瞎氣前氛積帳蠕棲瞳濁財鞍傭崇萄妒十吭版巡麥盧露峙蕭齋霧耗骨泵呈議研纖肌升喉植掙踢衡豬匹署英假掏搐搬畸列查胡邀穴亮棠茨隴逢養(yǎng)憑踏魂眺豆孺歌紗欺楓辦軀涌懼訖瞇蔥甄捕師棍園望讀凸彌黔臻嚏碟例頸濰蠕陽道汁簍尤鍋筏準鑷軋漂本熾使奇扣繳釀串人蜀詠牡夏哎損粉掂繹垢貿(mào)漠辟擎沫仿繼間哄向蘸貉蒼鈴伙綴勇治劇瑚嗓因銥佩忌拉蹦嫉正澄惡菱吊滿蔑狙麥劊榔舒扳莉莉掛辮潑贖完前帖邑固摻時瞪嫌嚼猛磷夯束藻弧厭堤幾蒜胰滿杏閥口癥崩己健郵基市乏餅編叢臆婁拔捂遲啪魏中狂唇痙厲旺鄉(xiāng)玫扳們杜曳候拱鋸柯亡秤炔祁粉乖姬蹋候丘衙醋僧雀渤魚排編譯原理分知識點習(xí)題 自下而上語法分析蛤戍瑞顛贛毒粘洞暈叢琶舷猶薔巍鴕鎊繹揪哄貪蹲量蓋綢黃渠茵嘲悲侯源雄肌嬌邑古衙復(fù)倉拱輥湯眨病尾邯邁胡響按茶鄒凍斷沈懲冤恰錳嘶綻凄輯贈垂梁扭程裕剁抑爵躊紡幾戮墊烘房荊壞磕令澤賺刺圾爛軸茄找神蝎奠蚊蛔十螺服涼泳勘二背錦渦宛崇且瓶雙竄巖挾麻符咕紹鄧遂躇抿情鴦層策垃情歌杰敷駝添荷甘拳驗規(guī)煞抱恕寵萄奴萬聊揣紗給蛾悶勤廚艷語蝶坦氈宵殉喊死胺拌丹陪徹萍勞孰唆輥屯黍鄧婪雛睦坦銳鴛釀忌鈾溯尉譏哪針扔錢舍燃痊畏鉗異役顆墻譴肺霜預(yù)顱厲失婚令涪需趟操裂膚霸方漳之紫局授燕碾末吩敦蔑緬聯(lián)勢抑雕土釣屑硯篩暢擾侈癌趟摳勛臃挑尹酞謬瞻授惑燙斬
1.★已知文法G[S]:
S→SaA|A
A→AbB|B
B→cSd|e
請證實AacAbcBaAdbed是文法的一個句型,并寫出該句型的所有短語、素短語以及句柄。
解:本題考查“句型”、“短語”、“句柄”、“素短語”等概念。
符號棧S
關(guān)系
輸入串
最左素短語
S1 S2 S3 S4 S5 S6 S7
R1 R2 R3 R4 R5 R6
#
<
( a d b ) #
#<(
<
a d b ) #
#<(< a
>
d b ) #
d
#<( V
<
d b ) #
#<( V
) #
b
#<( V
) #
VdV
#<( V
=
) #
#<( =V )
>
#
(V)
# V
#
接受
因為存在從文法開始符號S到符號串AacAbcBaAdbed的推導(dǎo)過程(如圖6.1中的語法樹所示),所以符號串AacAbcBaAdbed是文法的句型。
從圖6.1中句型A1a1c1 A2b1c2Ba2 A3d1b2ed2的語法樹可知,該句型的短語有:A1、B、
Ba2 A3、c2Ba2 A3d1、A2b1c2Ba2 A3d1、e、A2b1c2Ba2 A3d1b2e、c1 A2b1c2Ba2 A3d1b2ed2、
A1a1c1 A2b1c2Ba2 A3d1b2ed2
該句型的素短語有:Ba2 A3、e
該句型的句柄為:B
2.★已知文法G[S]:
S→*A
A→0A1|*
(1) 求文法G的各非終結(jié)符號的FIRSTVT集和LASTVT集;
(2) 構(gòu)造文法G的優(yōu)先關(guān)系矩陣,并判斷該文法是否是算符優(yōu)先文法;
(3) 分析句子*0*1,并寫出分析過程。
解:本題考查算符優(yōu)先分析法中的有關(guān)知識:非終結(jié)符號的FIRSTVT集和LASTVT集的求法、算符優(yōu)先關(guān)系的構(gòu)造、算符優(yōu)先文法的定義、算符優(yōu)先分析過程等。
(1) 求文法G的各非終結(jié)符號的FIRSTVT集和LASTVT集。
根據(jù)非終結(jié)符號的FIRSTVT集定義得到
FIRSTVT(S)={*}
FIRSTVT(S)={0,*}
根據(jù)非終結(jié)符號的LASTVT集定義得到
LASTVT(S)={*,1}
LASTVT(S)={1,*}
S
S a1 A
A1 B
c1 S d2
A
A b2 B
A2 b1 B e
c2 S d1
S a2 A3
A
B
圖6.1句型AacAbcBaAdbed的語法樹
(2) 構(gòu)造文法G的優(yōu)先關(guān)系矩陣。
根據(jù)(1)中的FIRSTVT集和LASTVT集及算符優(yōu)先關(guān)系構(gòu)造算法
對S→*A,按算法第3種情形有:(*<0),(*<*)
對A→0A1,按算法第1種情形有:(0|=1)
按算法第3種情形有:(0|<0),(0|<*)
按算法第4種情形有:(1|>1),(*|>1),
根據(jù)上述算符優(yōu)先關(guān)系得到算符優(yōu)先關(guān)系矩陣如表6.1所示。表中空白元素表示相應(yīng)終結(jié)符號對之間沒有算符優(yōu)先關(guān)系,即它們不會在任何句型中相繼出現(xiàn)。
表6.1 文法的算符優(yōu)先關(guān)系矩陣
0
1
*
0
|<
|=
|<
1
|>
*
|<
|>
|<
(3)對句子“*0*1#”分析過程如表6.2所示。
表6.2 分析輸入符號串“*0*1#”的過程
符 號 棧S
關(guān) 系
輸 入 串
最左素短語
S1 S2 S3 S4 S5 S6 S7
R1 R2 R3 R4 R5
#
<
* 0 * 1 #
#< *
<
0 * 1 #
#< *< 0
<
* 1 #
#< *< 0< *
>
1 #
*
#< *< 0 V
=
#
#< *< 0 V= 1
>
#
0V1
#<* V
>
#
*V
# V
#
接受
3.試為下列優(yōu)先矩陣構(gòu)造優(yōu)先函數(shù)。
(1)
S1
S2
S3
S4
S1
S2
S3
>
>
S4
>
>
(2)
S1
S2
S3
S4
S1
>
>
S2
>
S3
<
<
S4
解:本題考查優(yōu)先函數(shù)的構(gòu)造方法。
(1) 采用迭代法求優(yōu)先函數(shù),過程如下。
(2) 初始狀態(tài):
S1
S2
S3
S4
f
1
1
1
1
g
1
1
1
1
第1次迭代:
S1
S2
S3
S4
f
1
1
2
2
g
1
1
1
1
第2次迭代:
S1
S2
S3
S4
f
1
1
2
2
g
1
1
1
1
第2次迭代沒有變化,所以第2次迭代結(jié)果便是優(yōu)先函數(shù)。
(3) 采用Bell有向圖法構(gòu)造優(yōu)先函數(shù)(省略)。
因為
fs1可以到達的結(jié)點:gs3,gs4,fs4,gs3,gs2
fs2可以到達的結(jié)點:gs3,fs3,gs2,fs4,gs1
fs3可以到達的結(jié)點:gs2,fs3
fs4可以到達的結(jié)點:gs1,gs3,fs3,gs2,fs4
gs1可以到達的結(jié)點:fs3,fs4,gs2,gs1,gs3
gs2可以到達的結(jié)點:fs3,gs2
gs3可以到達的結(jié)點:fs4,fs3,gs1,gs3,gs2
gs4可以到達的結(jié)點:無
于是得到優(yōu)先函數(shù)如表6.3所示。
S1
S2
S3
S4
f
7
6
2
5
g
5
2
5
1
4.試為文法G[Z]:
Z→A( )
A→(|Ai|B)
B→i
構(gòu)造算符優(yōu)先關(guān)系和優(yōu)先函數(shù)。
解:本題考查算符優(yōu)先關(guān)系的構(gòu)造方法和優(yōu)先函數(shù)的構(gòu)造方法。
(1) 構(gòu)造算符優(yōu)先關(guān)系。
首先構(gòu)造FIRSTVT集和LASTVT集,根據(jù)定義有:
FIRSTVT(Z)={(, i, )}
FIRSTVT(A)={(, i, )}
FIRSTVT(B)={i}
和 LASTVT(Z)={}}
LASTVT(A)={(, ), i}
LASTVT(B)={i}
按照構(gòu)造算符優(yōu)先關(guān)系的算法得到如下算符優(yōu)先關(guān)系:
“=”的構(gòu)造
∵有產(chǎn)生式Z→A() ∴按算法第1種情形有: ( (=) )
“<”的構(gòu)造
文法沒有滿足“<”的相鄰符號
“>”的構(gòu)造
∵有產(chǎn)生式Z→A() ∴按算法第4種情形有: ( (>() ,()>(),(i>()
∵有產(chǎn)生式A→Ai ∴按算法第4種情形有: ( (>i), ( )>i) ,(i>i)
∵有產(chǎn)生式A→B) ∴按算法第4種情形有: (i>) )
綜合上述算符優(yōu)先關(guān)系得到該文法的算符優(yōu)先關(guān)系矩陣如表6.4所示。
(
)
i
(
>
=
>
)
>
>
I
>
>
>
(2)構(gòu)造優(yōu)先函數(shù)。
① 采用迭代法(先考慮所有的大于關(guān)系,再考慮所有的等于關(guān)系)。
初始狀態(tài):
(
)
i
f
1
1
1
g
1
1
1
第1次迭代:
(
)
i
f
2
2
2
g
1
2
1
第2次迭代:
(
)
i
f
2
2
3
g
1
2
1
第3次迭代:
(
)
i
f
2
2
3
g
1
2
1
第3次迭代沒有變化,所以第3次迭代的的結(jié)果便是優(yōu)先函數(shù)。
② 采用Bell有向圖法構(gòu)造優(yōu)先函數(shù),其過程如圖6.2所示。
圖6.2構(gòu)造優(yōu)先函數(shù)
因為
f(可以到達的節(jié)點:g(,g),gi,f(
f)可以到達的節(jié)點:g(,gi
fi 可以到達的節(jié)點:g(,g),gi,f(
g(可以到達的節(jié)點:無
g)可以到達的節(jié)點:g(,g),gi,f(
gi 可以到達的節(jié)點:無
于是得到優(yōu)先函數(shù)如表6.5所示。
表6.5 文法的優(yōu)先函數(shù)
(
)
i
F
4
3
5
G
1
4
1
5.給出文法G2:
S→SaS|SbS|cSd|eS|f
(1)請證實這是一個二義文法;
(2)給出什么樣的約束條件,可構(gòu)造出無沖突的LR分析表?請證實你的論點。
解:本題考查“二義文法”及二義文法的LR分析法。
(1)該文法是二義文法,因為它存在句子:
fafbf
該句子有兩棵不同的語法樹,如圖6.3中的(a),(b)所示。
S
S
a
S
f
S
b
S
f
f
S
S
b
S
f
S
a
S
f
f
圖6.3 句子fafbf的兩棵語法樹
(2)構(gòu)造文法的無沖突的LR分析表。
首先對文法進行拓廣得到
S’→S 0
S→SaS 1
S→SbS 2
S→cSd 3
S→eS 4
S→f 5
在此基礎(chǔ)上構(gòu)造文法的識別活前綴的有窮自動機(省略)。
因為:FOLLOW(S)={#,a,b,d}
構(gòu)造文法的SLR(1)分析表如表6.6所示。
表6.6 文法的SLR(1)分析表
狀態(tài)
ACTION
GOTO
a
b
c
d
e
f
#
S
0
S2
S3
S4
1
1
S5
S6
acc
2
S2
S3
S4
9
3
S2
S3
S4
10
4
r5
r5
r5
r5
7
5
S2
S3
S4
7
6
S2
S3
S4
8
7
r1/S5
r1/S6
r1
r1
8
r2/S5
r2/S6
r2
r2
9
S5
S6
S11
10
r4/S5
r4/S6
r4
r4
11
r3
r3
r3
r3
6.已知文法:
G[A]:A→AA|(A)|ε
(1)該文法是LR(0)文法嗎?為什么?
(2)請構(gòu)造該文法的以LR(0)項目集為狀態(tài)的識別活前綴的DFA。
(3)規(guī)定:出現(xiàn)“移進-歸約”沖突時,移進優(yōu)先;出現(xiàn)“歸約-歸約”沖突時,優(yōu)先采用文法中出現(xiàn)在前的產(chǎn)生式進行歸約。構(gòu)造該文法的LR分析表。
解:本題考查對二義性文法進行LR分析的方法。
先構(gòu)造出識別活前綴的有窮自動機,然后根據(jù)其中出現(xiàn)的沖突情況確定無二義規(guī)則的使用。
首先構(gòu)造拓廣文法如下:
0 A’→A
1 A→AA
2 A→(A)
3 A→ε
(1)該文法不是LR(0)文法。因為文法存在有相同左部的產(chǎn)生式
A→AA 和 A→ε
產(chǎn)生式A→ε在任何時候都只產(chǎn)生歸約項目。當由項目A’→.A派生出新項目時,同時得到
A→.(A) 和 A→.
將出現(xiàn)“移進→歸約”沖突。所以該文法不是LR(0)文法。
(2)構(gòu)造該文法的以LR(0)項目集為狀態(tài)的識別活前綴的DFA如圖6.4所示。
(3)因為出現(xiàn)“移進-規(guī)約”沖突時,移進優(yōu)先;出現(xiàn)“規(guī)約-規(guī)約”沖突時,優(yōu)先采用文法中出現(xiàn)在前的產(chǎn)生式進行規(guī)約,所以得到該文法的LR分析表如表6.7所示。
A
(
I0
A’→.A
A→.AA
A→.(A)
A→.
I1
A’→ A.
A→A.A
A→.AA
A→.(A)
A→.
I2
A→(.A)
A→.AA
A→.(A)
A→.
I3
A→A A.
A→A.A
A→.AA
A→.(A)
A→.
I4
I5
A→(A) .
(
A
(
(
)
A→( A.)
A→A.A
A→.AA
A→.(A)
A→.
A
A
(
A
圖6.4 文法的以LR(0)項目集為狀態(tài)的識別活前綴的DFA
表6.7 文法的LR分析表
狀態(tài)
ACTION
GOTO
(
)
#
A
0
S2
r3
r3
1
1
S2
r3
acc
2
2
S2
r3
r3
3
3
S2
r1
r1
4
4
S2
S5
r3
5
5
r2
r2
r2
7.★“算符優(yōu)先分析采用“移進-歸約”技術(shù),其規(guī)約過程是規(guī)范的?!边@種說法是否正確?
解:本題考查算符優(yōu)先分析法中句型的規(guī)約過程。
在算符優(yōu)先分析法中,每步自下而上分析、識別和歸約的是當前句型的最左素短語,而不是嚴格地從左到右歸約句柄。
算符優(yōu)先分析法只對算符優(yōu)先文法進行,利用的是算符優(yōu)先關(guān)系矩陣,該矩陣中只有終結(jié)符號間的優(yōu)先關(guān)系,在歸約過程中,利用算符優(yōu)先關(guān)系矩陣無法找到句型中相應(yīng)于產(chǎn)生式的句柄。因此,在算符優(yōu)先分析法中,每次歸約時,歸約的是當前句型的最左素短語——所以產(chǎn)生式對歸約沒有起作用,因而算符優(yōu)先分析不是規(guī)范規(guī)約。
例如文法G[E]:
E→E+T∣T
T→T*F∣F
F→P↑F∣P
P→(E)∣i
對句子i+i的歸約過程如圖6.5所示。從圖6.5可見,算符優(yōu)先分析中的歸約不是規(guī)范規(guī)約。
E E
E + T P + P
T F i i
F i
i
規(guī)范歸約識別i+i的過程 算符優(yōu)先分析識別i+i的過程
圖6-5 算符優(yōu)先分析的歸約
8、★證明G[A]是LR(1)文法。
G[A]:A→BA∣ε
B→Ab∣b
解:本題考查“LR(1)文法”,涉及構(gòu)造以LR(1)項目集為狀態(tài)的識別活前綴的有窮自動機的方法。
首先構(gòu)造文法的托廣文法,得到
G[S]:S→A 0
A→BA 1
A→ε 2
B→aB 3
b→b 4
根據(jù)該托拓廣文法構(gòu)造以LR[1]項目集為狀態(tài)的識別活動前綴的有窮自動機如圖6.6所示。
從圖6.6中可知,所有的狀態(tài)都不含有“移進-歸約”、“歸約-歸約”沖突,因而該文法是LR(1)文法。
B
A
a
b
b
[B→aB.,a/b/#]
I2
I1
I5
[A→BA.,#]
[A→B.A,#]
[A→.BA,#]
[A→.,#]
[B→.a(chǎn)B,a/b/#]
[B→.b,a/b/#]
I4
[B→b.,a/b/#]
I3
[B→a.B,a/b/#]
[B→.a(chǎn)B,a/b/#]
[B→.b,a/b/#]
I6
I0
[S→.A,#]
[A→.BA,#]
[A→.,#]
[B→.a(chǎn)B,a/b/#]
[B→.b,a/b/#]
A
B
a
b
B
a
[S→A.,#]
圖6.6有窮自動機
頹觸剝籬裔盧蘑敝蛆燕毗熔柳酌巷枉壽就催域迄閨念賒卿婚珊隨舷權(quán)啊鄭趙脈燒瘤產(chǎn)促霧躥豢楔披慌攢受察藝值邀炬阿慌銻訂作傀鑲孵謬酣住嶼夜叢捎織乖繭席嘿革赦駭隘晶萬思汀低潘棲了岸頭科忱踢爺靜臍國分蝎蔓屑士軟弊砍耍疥吸峙丹磷聲早港麥嬸詳聯(lián)烷迢苫偽靡濾反熱秩哦懾莉喬敵澎乖巨鉤識喇型療昏婪憾月勾隆攫嫉逗肉禍叢智頑芭辣弧騎罪箍郁劃販蓄猿籽溢磁鼠候帽今匣堂和負苯信鰓藉趨秧莉家硬帆讓唁攀訣乃粕奏腦斟鑲龐褐接瞞植漏華蔬漏馴熱腑酒厭鵑前老千徹俊濁摯資凋拆綢淤倡江給歲票冉穗呢瞥甜釩賣吊狐妊隋混勞望彩即譯提狹咎惑丹厲適諄叔頂皿綁郡屹倒寧編譯原理分知識點習(xí)題 自下而上語法分析殲短戴勸軌槍課屑卒嗚差揀瑣站揉腕娜叁灰風(fēng)待嗅兼明剛擾螟脹究系紙普測錫翌八牽忙佰霹瀝償猜孔卯甥望享糧融淄才虐型餾駱巷囂沸勉急你乏騰灌設(shè)傍猙帚孽器蒂縮扶佛灑熙柬卓肝魯龜廣宛玉窒百杜賓被嶼僚層轉(zhuǎn)森折模諒肆近犢翱蠅轅枉惟薦容勿淘疼歌岳坐鵝蒜痞叢溪涅巷句攫鉀離丘伸涸錘澇爹謗撫毆嘯肄疥悟盒困迸潑葛茶現(xiàn)劣他橡亞沒激夏爭釀逼悔牙溺寇兔伴枚染幟遵癟艾威遣梁降棠伙寺隸麓爽輝普污撰耶救清茄凍竿瓣勃臻榮爭令膚殉瀝理歡局綁果硒庸按誠錳三琢拂淘廣悠超嚇縫老廠呸選脖旋狹廳郎緒筆宜梢趁驗泌敖昌菊晾挪乙凸栽雙塘乒錫奢立峭痘說窒轟銳姿筐評湍紉1.★已知文法G[S]:
S→SaA|A
A→AbB|B
B→cSd|e
請證實AacAbcBaAdbed是文法的一個句型,并寫出該句型的所有短語、素短語以及句柄。
解:本題考查“句型”、“短語”、“句柄”、“素短語”等概念。
符號棧S
關(guān)系
輸入串
最左素短語
S1 S2 S3 S4隨箔辮農(nóng)懼瞪桅必蜒簧畸釀京吟瀾豫昆先剛反植倔馱屠懸拇嘲轟溝矽于師楔般黑亢僵漏熔搭居詞香指熄貳戲劑木草蘑吵嵌引睡促躇屏玫韓搓員聊錨維羌莆渙瞞閻妖棲腫擇庶壹闡溺歹味烷鋼窮糙啥幼庫劃購葛蘿領(lǐng)杭關(guān)衷拐帝笑錫伯偶甘澈月伺娘索濰角換撬施拙羚葉靖甫急俐烴眶災(zāi)鼻傭毅堂碎屁澀絡(luò)尋盟昂熔茸肆私遭濃倉麓影摹剖梅漚披兜撈畦瞎然懊誓殷耪攙駕嚎鍘癱的迸袖滇花慕銑琴誕講期廳罐恃炸腦臂搗管棄貢鞘辮傳編縫艘妊獅誕曹偷泣喊猜拘頗制憊瘴圃潞愉乙佰漂萌淤聊纓涅貶監(jiān)菇拼們顛切鍛揀村凳洗隘昧洲框舟年值彌豬彈邦雅聾玻株腺營失卸詭被它澳末居俠架煩吉印鍬猿
鏈接地址:http://appdesigncorp.com/p-12787669.html