編譯原理典型例題

編譯原理典型例題

ID:13200613

大?。?85.00 KB

頁數(shù):16頁

時(shí)間:2018-07-21

編譯原理典型例題_第1頁
編譯原理典型例題_第2頁
編譯原理典型例題_第3頁
編譯原理典型例題_第4頁
編譯原理典型例題_第5頁
資源描述:

《編譯原理典型例題》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、編譯原理典型案例1.對于文法G[S]S→(L)S→aSS→aL→L,SL→S(1)畫出句型(S,(a))的語法樹;(2)寫出上述句型的所有短語、直接短語、句柄和素短語。解答這類題目重點(diǎn)考查語法樹、推導(dǎo)、短語、直接短語、句柄和素短語等基本概念。在句型中尋找短語、直接短語、句柄的方法:(1)畫出句型對應(yīng)的語法樹。句型(S,(a))的語法樹如下圖所示S(L)S(L)L,SSa(2)在該語法樹中尋找短語、直接短語、句柄。首先我們看短語的定義:令G是一個(gè)文法,S是文法的開始符,假設(shè)α,β,δ是文法G的句型,如果有S*TαAδ且A+Tβ則稱β是句型αβδ相對于非終

2、結(jié)符A的短語。如果有ATβ,則稱β是句型αβδ相對于規(guī)則A→β的直接短語。一個(gè)句型的最左直接短語稱為該句型的句柄。根據(jù)短語的定義可知,以非終結(jié)符A為根的子樹的葉結(jié)點(diǎn)從左到右排列就是相對于非終結(jié)符A的短語;如果子樹只有兩代,則短語就是直接短語;最左邊的兩代子樹的所有葉結(jié)點(diǎn)從左到右排列,就是該句型的句柄。素短語是一個(gè)短語,它至少包含一個(gè)終結(jié)符,且除自身外不再包含其他素短語。處于句型最左邊的素短語為最左素短語。從語法樹中我們可以找到:短語:a,S,(a),S,(a),(S,(a))直接短語:a,S句柄:S素短語:a-16-1.寫一個(gè)上下文無關(guān)文法,使其語言能

3、被5整除且不以0開頭的無符號整數(shù)集合(如{5,10,15})解答能被5整除的數(shù)從形式上看,是以0,5結(jié)尾的數(shù)字串。題目要求不以0開頭,注意0不是該語言的句子。句子的結(jié)構(gòu)分為三種:5BACB…CA一位數(shù)兩位數(shù)多位數(shù)其中,A代表可以出現(xiàn)在個(gè)位上的數(shù)字,只能是0或5;B代表可以出現(xiàn)在開始位上的數(shù)字,除了0以外,其他數(shù)字都可以;C代表可以出現(xiàn)在中間位上的數(shù)字。0-9所有數(shù)字都可以。于是,A→0

4、5B→1

5、2

6、3

7、4

8、5

9、6

10、7

11、8

12、9C→0

13、B寫文法時(shí),先描述一位數(shù)結(jié)構(gòu),于是有產(chǎn)生式S→5。對于兩位數(shù)和多位數(shù),都是以B開頭和以A結(jié)尾,于是有產(chǎn)生式S→DA。用非

14、終結(jié)符D推導(dǎo)出兩位數(shù)和多位數(shù)中除個(gè)位數(shù)字以外的數(shù)字。對與多位數(shù),由于中間位可以是許多位,必須使用遞歸技術(shù)來描述其結(jié)構(gòu)。于是有產(chǎn)生式:D→DCD→B因此,所求文法為G[S]:S→5S→DAD→DCD→BA→0

15、5B→1

16、2

17、3

18、4

19、5

20、6

21、7

22、8

23、9C→0

24、B2.寫一個(gè)文法G,使其語言為不以0開頭的偶數(shù)集。解答不以0開頭的偶數(shù)集數(shù)字的結(jié)構(gòu)分為三種:一位數(shù)、兩位數(shù)和多位數(shù)。-16-ACBDC…DB一位數(shù)兩位數(shù)多位數(shù)其中,A代表可以出現(xiàn)在個(gè)位上的數(shù)字,可以是2,4,6,8,但不能是0;B代表可以出現(xiàn)在開始位上的數(shù)字,除了0以外,其他數(shù)字都可以;C代表可以出現(xiàn)

25、在中間位上的數(shù)字。0-9所有數(shù)字都可以。于是,A→2

26、4

27、6

28、8B→0

29、AC→1

30、3

31、5

32、7

33、9

34、AD→0

35、C寫文法時(shí),先描述一位數(shù)結(jié)構(gòu),于是有產(chǎn)生式S→A。對于兩位數(shù)和多位數(shù),都是以C開頭和以B結(jié)尾,于是有產(chǎn)生式S→CE。用非終結(jié)符E推導(dǎo)出兩位數(shù)和多位數(shù)中除個(gè)位數(shù)字以外的數(shù)字。對與多位數(shù),由于中間位可以是許多位,必須使用遞歸技術(shù)來描述其結(jié)構(gòu)。于是有產(chǎn)生式:E→CEE→B因此,所求文法為G(S):S→A

36、CEE→CE

37、BA→2

38、4

39、6

40、8B→0

41、AC→1

42、3

43、5

44、7

45、9

46、AD→0

47、C4.考慮下面的程序:????…?procedureP(x,y,z);b

48、eginy:=y+1;z:=z+xend;begina:=2;b:=3;P(a+b,a,a);printa-16-end.試問,若參數(shù)傳遞的方式分別采用傳值、傳地址、得結(jié)果和傳名時(shí),程序執(zhí)行后輸出a的值是什么?解答所謂傳值是調(diào)用段把實(shí)在參數(shù)的值計(jì)算出來,被調(diào)用段把這些值抄進(jìn)自己的形式參數(shù)中,像使用局部名一樣使用這些形式單元。對形式參數(shù)的任何運(yùn)算不影響實(shí)參的值。上面過程P調(diào)用的的參數(shù)傳遞過程如下圖所示。過程調(diào)用前過程調(diào)用后a+b=5a=2x=5y=2b=3z=3但過程P無法改變實(shí)參a的值。因此,程序執(zhí)行后輸出a的值是2。所謂傳地址是把實(shí)在參數(shù)的地址傳遞給

49、相應(yīng)的形式參數(shù)。在過程段中每個(gè)形式參數(shù)都有一個(gè)相應(yīng)的單元,稱為形式單元。形式單元將用來存放相應(yīng)實(shí)在參數(shù)的地址。過程體對形式參數(shù)的任何引用或賦值都被處理成對形式單元的間接訪問。過程調(diào)用前過程調(diào)用后a+b=5a=2xyb=3z過程調(diào)用后,形參x的形式單元指向存a+b值的臨時(shí)變量的地址,形參y的形式單元指向變量a的地址,形參z的形式單元指向變量b的地址。形參通過指針可以間接訪問實(shí)參。執(zhí)行y:=y+1;后,實(shí)在參數(shù)的變化:-16-a+b=5a=3xyb=3z執(zhí)行z:=z+x;后,實(shí)參的變化:a+b=5a=8xyb=3z因此,程序執(zhí)行后輸出a的值是8。所謂得結(jié)果

50、是每個(gè)形式參數(shù)對應(yīng)兩個(gè)單元,第一個(gè)單元存放實(shí)參的地址,第二個(gè)單元存放實(shí)參的值。在過程體中對形參

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。