【渝粤题库】陕西师范大学200831 编译原理 作业
一、填空
1、預測分析方法LL(1)方法,它由一個棧,一個 和一個 組成。其中構造 是該分析方法的關鍵。
2、下面圖 是一個DFA,而圖 是一個NFA
3、詞法分析器的任務是對 進行掃描,以 為依據識別出一個個單詞符號。
4、使用算符優先法的先決條件是 。
5、詞法分析方法分為兩大類,算符優先分析法屬于 的分析方法,LR分析法、方法屬于 分析方法,而遞歸下降分析方法(LL(1)分析方法)屬于 分析方法。
6、規范推導指的是 推導,規范規約是關于句型2的一個 推導的逆過程。
7、循環優化中的代碼外提是指 ,強度削弱是指 。
8、∮生成一個無遞歸的預測分析器,其文法∮求一是 ,二是 。
9、控制流檢查,其目的合格證 有合法的轉向點;而一致性檢查,則是檢查 在相同的作用域內只能說明一次。
10、一個程序設計語言是由 和 兩方面來定義的。
11.編譯程序從執行的方式上講,它可以分為編譯方式和 方式,其中 方式要生成目標代碼。
12.編譯程序通常分為5個階段,它們是詞法分析階段、語法分析階段、 階段、 階段和目標代碼生成階段。
13.設文法G=(VT,NN,S,P)是一個四方式,其中P集合,它的每個元素的形式為 。
14.語法分析分為 的分析方法和 的分析方法,其中遞歸下降分析方法是一種 分析方法。
15.在遞歸下降分析方法中,試探分析方法中之所以要不斷用一個產生式的多個候選進行逐個試探,最根本的原因是這些候選式 (備選:只有一個/ 可有多個)。
16.算符優先分析法是一種 的分析方法,它適合于分析各種程序設計語言中的 ,并宜于手工實現。
17.目前最廣泛使用的無回溯的“移進一歸約”方法是 分析方法。
18.詞法分析器的輸入是 ;其輸出是 。
19.DFA和NFA的主要區別有三點,它們是(1) ;(2) ;(3) 。
20.循環優化中的代碼外提是指 ;強度被削弱指 。
21、編譯器是一種翻譯程序,它用于將_______語言程序翻譯為_______語言程序。后者通常以目標代碼的形式出現,在windows操作系統平臺下,這種代碼文件的擴展名通常為.obj。通常還要經過進一步的連接,生成可執行文件。通常有兩種方式進行這種翻譯,一種是編譯,另一種是__________。這種方式并不生成可執行文件。這兩種方式相比_______(前者/后者)程序運行的速度更快。
22、在編譯的五個階段中,分析的任務是識別源程序中的單詞符號,編譯程序中實現這部分功能的部分一般稱為,它通常在編譯器中作為_________供語法分析程序在需要單詞符號時調用。在這一編譯階段中發現的源程序錯誤,稱為_________錯誤。
23、在計算機發展的早期階段,內存較小的不能一次完成程序的編譯。這時通常將編譯過程分成若干______來完成。每一_______完成一部分功能。
24、一個語言的字母為{a,b},則字符串ab的前綴有__、、,其中____不是真前綴。
25、字符串的連接運算一般(滿足/不滿足)交換率。
26、文法是一個四元組,或者說由四個元素構成,即______、、開始符號、。
27、產生式S→Sa|a產生的語言為____________。
28、喬姆斯基(Chomsky)將文法分為四類,即0型文法、文法、文法、文法。
29、如果文法G的一個句子存在兩棵不同的語法分析樹,則這個文法是(二義的,非二義的,無法判斷是否是二義的)。
30、A為非終結符,如果文法存在產生式,則稱可以(推導出/歸納為),稱可_______(推導出/歸約為)。
31、為了方便語法分析程序的使用,詞法分析過程中通常對所識別出的單詞符號進行分類。以C語言為例,其中int、float等單詞通常歸入_______類,而‘+’、‘-’、‘’、‘/’等符號歸入________類。
32、與采用高級程序設計語言寫的詞法分析器相比,用匯編語言寫的詞法分析通常分析速度要_________(快/慢)一些。
33、確定有限自動機_______(是/不是)非確定有限自動機的特例;對任一非確定有限自動機______(能/不能)找到一個與之等價的確定有限自動機。
34、有限自動機中兩個狀態S1和S2是等價的是指無論是從S1還是S2出發,停于_____時,所識別的_______的集合相同。
35、通常用正規文法或正規式來描述程序設計語言的詞法規則,而使用______來描述程序設計語言的語法規則。
36、語法分析階段的處理中,處理的輸入數據是來自詞法分析階段的______。它們是語法分析階段的_______(終結符/非終結符)。
37、自下而上的分析方法,是一個不斷_______(推導/歸約)的過程。
38、遞歸下降分析方法中,(不一定/必須)要消除所有的左遞歸。
39、這個產生式中含有的左遞歸是(直接/間接)左遞歸。
40、在表驅動的預測分析器中,讀入了一個終結符a,若終結符與棧項的終結符相同,并且不是結束標志KaTeX parse error: Expected group after '_' at position 12: ,則此時應當將棧頂符號_?______;若此時棧項符號是…,并且讀入的這個終結符不是KaTeX parse error: Expected group after '_' at position 5: ,這說明_?________(分析成功/源…,并且讀入的這個終結符也是$,則說明______(分析成功/源程序有語法錯誤)。
41、算符優先分析方法由不存在使用形如這樣的產生式進行歸約,即只要求_________(非終結符/終結符)的位置與產生式結構一致,從而使得分析速度與LR分析法相比______(更快/更慢)。
42、產生式E→E+T對應的LR(0)項目中:待歸約的項目是_______,移進項目是_________,還有兩個項目為_________、。
43、當一個LR(0)項目集中含有兩個歸約項目時,稱這個項目集中含有(移進-歸約/歸約-歸約)沖突。
44、靜態語義檢查一般包括以下四個部分,即類型檢查、控制流檢查、名字匹配的檢查、一致性檢查,請寫出C語言編譯過程中以下這些錯誤都屬于哪一種靜態主義檢查的檢查范圍:
a) 對將字符型指針的值賦給結構體類型的指針變量:___
b)switch語句中,有兩個case語句中出現了相同的常量:________
45、C語言的程序必須經過________才能生成目標代碼,再經過________才能運行。PASCAL語言、FORTRAN語言的源程序也要經過這樣的過程。通常將C、PASCAL、FORTRAN這樣的語言統稱為______(高級/匯編/機器)語言。而將最終的可執行程序稱為________(高級/匯編/機器)語言程序。
46、在編譯C語言程序的過程中,發現源程序中的一個標識符過長,超過了編譯程序允許的范圍,這個錯誤是在編譯五個階段中的______階段發現的,這種錯誤通常被稱作_____錯誤。
47、語法分析階段的目的是識別出源程序的語法結構與語法單位。編譯程序中負責這一功能的程序稱為________。在這一階段中發現的錯誤稱為________錯誤。
48、在計算機發展的早期階段,內存較小的不能一次完成程序的編譯。這時通常將編譯過程分成若干______來完成。每一______完成一部分功能。
49、字符串的連接運算一般________(滿足/不滿足)結合率。
50、按照文法的定義,文法由4個元素組成;這4個元素中,是這個文法所規定的語言的字母表,代表這個文法所規定的語言的語法實體的集合。對一下文無關文法,通常我們只需要寫出這個文法的產生式集合就可以確定這個文法的其他所有元素。其中,第一條產生式的左部符號為。所有產生式的左部符號構成的集合為該文法的______集合。
51、按照喬姆斯基對方法的分類,上下文無關文法是______型文法,型文法的描述能力最強,型文法又稱為正規文法。
52、如果文法G的一個句子存在兩棵不同的語法分析樹,則這個文法是(二義的,非二義的,無法判斷是否是二義的)。
53、A為非終結符,如果文法存在產生式,則稱可以(推導出/歸約為),稱可____(推導出/歸約為)。
54、為了方便語法分析程序的使用,詞法分析過程中通常對所識別出的單詞符號進行分類。以C語言為例,變量名、數組名、函數名等等符號通常歸入_________類,而‘{’、‘}’歸入___________類。
55、在對單詞符號進行編碼時,單詞的編碼_________(應當避開/不需要避開)普通字符的編碼范圍。
56、確定有限自動機_____(是/不是)非確定有限自動機的特例;對任一非確定有限自動機______(能/不能)找到一個與之等價的確定有限自動機。
57、對于正規式aab+,字符串_____(符合/不符合)其定義,字符串aa_____(符號/不符合)其定義。
58、語法分析方法通常分為自上而下與自下而上兩大類,算符優先分析方法屬于_______的方法,而遞歸下降分析方法屬于________的方法。這種分類方法是以___________的生長方向依據的。
59、自上而下的分析方法則是一個不斷_______(推導/歸約)的過程。
60、遞歸下降分析方法中所消除的左遞歸______(不包括/包括)消除間接左遞歸。
61、產生式S→aSSb|aSSS|c中,前兩個右部的左公共因子是_______。
62、LL(1)文法的產生式中_______(一定沒有/可以含有)公共左因子。LL(1)文法中________(一定沒有/可以含有)左遞歸。為了避免回溯,LL(1)文法的預測分析表中,一個表項中___________(至多只有一個/可以有多個)產生式。
63、(所有/并非所有)算符優先文法都存在算符優先函數。若一個方法存在一個算符優先函數。
64、LR分析表中:表項s5中s表示的是(歸約/移進/接受)動作,表項r2中的r表求的是_______(歸約/移進/接受),表項acc的動作是______(移進/歸約/接受)。
65、LR(0)與SLR(1)兩種分析方法相比,的能力更強。
66、當一個LR(0)項目集中既含有移進項目,又含有歸約項目時,稱這個項目集含有(移進-歸約/歸約-歸約)沖突。
二、已知某文法的優先關系矩陣如下
(1)構造其優先關系圖
(2)由(1)結果求出其優先出數(用列表表示)
三、試用下列形式的四元式
(J,A,B,P)表示 if A B then p
(j ,—,—, p)表示 GOTO P
將下列語句翻譯為四元式序列
while (A ≥ B) DO
if (C = D) then x:=y + z
四、判斷下面語法是否正確
五、簡答題
1、詞法分析的任務是什么,有哪些方法可以實現詞法分析器。
2、語法分析器的任務是什么,寫出三種以上的語法分析的名稱。
3、簡述DAG在代碼優化中的用途。
六.構造一個DFA,它接受上所有滿足如下條件的字符串:每個1都有0直接跟在右邊。
要求:(1)寫出其正規表達式
(2)畫出表示該DFA的狀態轉換圖(可以省略中間的步驟)
七.給定文法G為:
給出句子G的句子,0127的最左推導和最右推導
八.對下面給定的文法G
計算G的每個非終結符的FIRST集和FOLLOW集
(2)構造G的預測分析表
九.試寫出下列語句或表達式的中間代碼:
(1) 要求寫出間接三元式
(2) 要求寫出逆波蘭表示
十.給定文法如第四題所給定的文法
(1)證明 是給定文法的一個句型
(2)指出上述句型的所有短語和句柄
十一、計算題
1、(10分)文法如下:
證明Abces是文法G的一個句型,并找出這個句型的短語、素短語、句柄。
2、寫出算術表達式A+B*(C-D)+E/(C-D)*N的四元式序列
3、寫出下面語句經翻譯后的三地址語句序列:
if C>D then x:=f+g else x:=x+1
十二、計算題
1、文法如下:
A→aB|c
B→Ab
證明aacbb是文法G的一個句子,并找出這個句子的短語、句柄。
2、寫出算術表達式A+B*(C-D)+E/(C-D)*N的三元式序列。
3、寫出下面語句經翻譯后的三地址語句序列:
if i>2 then a:=x+2 else x:=a+1
總結
以上是生活随笔為你收集整理的【渝粤题库】陕西师范大学200831 编译原理 作业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 永泰县备案系统(永泰县备案)
- 下一篇: 【渝粤题库】陕西师范大学201491 法