编译原理last集c语言,编译原理作业集-第七章.doc
編譯原理作業(yè)集-第七章
第七章 語(yǔ)義分析和中間代碼產(chǎn)生
本章要點(diǎn)
1. 中間語(yǔ)言,各種常見(jiàn)中間語(yǔ)言形式;
2. 說(shuō)明語(yǔ)句賦值語(yǔ)句布爾表達(dá)式控制語(yǔ)句的翻譯;
3. 過(guò)程調(diào)用的處理;
4. 類型檢查;
本章目標(biāo)
掌握和理解中間語(yǔ)言,各種常見(jiàn)中間語(yǔ)言形式類型檢查等內(nèi)容。
本章重點(diǎn)
1.中間代碼的幾種形式,它們之間的相互轉(zhuǎn)換:四元式、三元式、逆波蘭表示3.賦值語(yǔ)句算術(shù)表達(dá)式、布爾表達(dá)式的翻譯及其中間代碼格式4.各種控制流語(yǔ)句的翻譯及其中間代碼格式5.過(guò)程調(diào)用的中間代碼格式6.類型檢查本章難點(diǎn)
2. 類型系統(tǒng)和類型檢查;
作業(yè)題
一、單項(xiàng)選擇題:
1. 布爾表達(dá)式計(jì)算時(shí)可以采用某種優(yōu)化措施,比如A and B用if-then-else可解釋為。
a. if A then true else Bb. if A then B else false;
c. if A then false else true; d. if A then true else false;
2. 為了便于優(yōu)化處理,三地址代碼可以表示成a. 三元式 b. 四元式 c. 后綴式 d. 間接三元式
3. 使用三元式是為了:
便于代碼優(yōu)化處理 b. 避免把臨時(shí)變量填入符號(hào)表
節(jié)省存儲(chǔ)代碼的空間 提高訪問(wèn)代碼的速度
4. if x relop y then L表示成四元式為 。
a. (relop,x,y,L);b. (relop,L,x,y);c. (relop,x,L,y);d. (L,x,y,relop);
8. 在編譯程序中, 不是常見(jiàn)的中間語(yǔ)言形式。
a.波蘭式;b. 三元式;c. 四元式; d. 抽象語(yǔ)法樹;
9. 在編譯程序中安排中間代碼生成的目的是________。
a. 便于提高編譯效率; b. 便于提高分析的正確性;
c. 便于代碼優(yōu)化和目標(biāo)程序的移植;d.便于提高編譯速度;
10. 按照教材中的約定,下面 不是類型表達(dá)式:
a. boolean;b. type-error;c. real;d. DAG;
11. 一個(gè)Pascal函數(shù)
function f ( a, b:char ) :↑integer;
……
其作用域類型是 :
a. char×integer;b. char×char;c. char×pointer(integer);d. integer×integer;
12. 因?yàn)闃?biāo)識(shí)符可用于多種情況,比如常量標(biāo)識(shí)符、變量標(biāo)識(shí)符、過(guò)程標(biāo)識(shí)符等等。因此,在符號(hào)表中為了給出各個(gè)符號(hào)的標(biāo)志,常給標(biāo)識(shí)符引入一個(gè)屬性kind,然后在相應(yīng)產(chǎn)生式的語(yǔ)義動(dòng)作中添加給kind屬性賦值的語(yǔ)句。比如,在在產(chǎn)生式D(id:T的語(yǔ)義動(dòng)作中添加賦值語(yǔ)句id.kind= 。
a. VAR; b. CONSTANT;c. PROC;d. FUNC;
13. 下面 情況下,編譯器需要?jiǎng)?chuàng)建一張新的符號(hào)表。
a. 過(guò)程調(diào)用語(yǔ)句;b. 標(biāo)號(hào)說(shuō)明語(yǔ)句;c. 數(shù)組說(shuō)明語(yǔ)句;d.記錄說(shuō)明語(yǔ)句;
14. 函數(shù)function f(a,b:char):↑integer;…
所以f函數(shù)的類型表達(dá)式為:
a. char×char→pointer(integer); b. char×char→pointer;
c. char×char→integer; d. char×char→integer (pointer)
15. 如果一個(gè)語(yǔ)言的編譯器能保證編譯通過(guò)的程序,在運(yùn)行時(shí)不會(huì)出現(xiàn)類型錯(cuò)誤,則稱該語(yǔ)言是 。
a. 靜態(tài)的;b. 強(qiáng)類型的;c. 動(dòng)態(tài)的;d. 良類型的;
一.答案:1. b;2. d;3. b;4. d;5. c;6. c.;7. a;8. a;9. c;10. d;11. b;12. a;13. d;14. a;15. b;
二、填空題:
1. 語(yǔ)法分析是依據(jù)語(yǔ)言的語(yǔ)法規(guī)則進(jìn)行的,中間代碼產(chǎn)生是依據(jù)語(yǔ)言的規(guī)則進(jìn)行的。
2. 多目運(yùn)算x:=y[i]的三元式表示為兩部分:和。
3. 生成三地址代碼時(shí),臨時(shí)變量的名字對(duì)應(yīng)抽象語(yǔ)法樹的。
4. 一個(gè)類型表達(dá)式或者是基本類型,或者由施加于其它類型表達(dá)式組成。
5.。tblptr和offset分別保存尚未處理完的過(guò)程的 和它們的offset,這兩個(gè)棧頂?shù)脑胤謩e是正在處理的過(guò)程的的符號(hào)表指針和 。
7. 在一些pascal的實(shí)現(xiàn)中,如果說(shuō)明中出現(xiàn)了沒(méi)有名字的類型表達(dá)式,編譯器這樣處理:建立一個(gè) 來(lái)和每個(gè)聲明的變量標(biāo)識(shí)符相聯(lián)系。
8. 賦值語(yǔ)句a:=b*-c+b*-c的后綴式為 。
9. 多目運(yùn)算
總結(jié)
以上是生活随笔為你收集整理的编译原理last集c语言,编译原理作业集-第七章.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: initsdk.exe是什么进程 作用是
- 下一篇: InoRpc.exe进程有什么作用 In