夏彥 一周工作總結(jié)
大連汽車(chē)廣場(chǎng)有限公司
工作總結(jié)
在這一周主要工作是進(jìn)行系統(tǒng)測(cè)試,其次是應(yīng)對(duì)領(lǐng)導(dǎo)的檢查。
每天早上在早會(huì)要對(duì)前一天發(fā)現(xiàn)的問(wèn)題進(jìn)行總結(jié),并匯報(bào)前一天的紀(jì)律情況;隨后需要對(duì)交易大廳進(jìn)行清潔打掃,保證大廳地面的干凈;其次每天在測(cè)試前需要拿KEY,檢查維護(hù)端的數(shù)據(jù)是否需要重新導(dǎo)入,如果需要導(dǎo)入要檢查當(dāng)前競(jìng)拍的車(chē)輛是否都是流拍或是成交,KEY不可以有插在電腦上的情況,保證數(shù)據(jù)成功導(dǎo)入;維持每天測(cè)試的紀(jì)律,保證每天都能夠檢查出BUG,下午下班之前及時(shí)將問(wèn)題交給梁楠楠。在周三對(duì)財(cái)政王主管進(jìn)行了維護(hù)端的講解。在周四我們對(duì)交易大廳進(jìn)行了一次徹底的清掃,來(lái)迎接大連電視臺(tái)的來(lái)訪。以上就是本周工作的主要內(nèi)容。
擴(kuò)展閱讀:課程設(shè)計(jì) 夏彥
編譯原理設(shè)計(jì)說(shuō)明
衡陽(yáng)師范學(xué)院
計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)
課程設(shè)計(jì)
題目:PL/X編譯程序改進(jìn)及擴(kuò)展指導(dǎo)教師:徐雨明老師年級(jí)班別:08級(jí)1班學(xué)號(hào):08190123學(xué)生姓名:夏彥時(shí)間:201*年6月16日
1編譯原理設(shè)計(jì)說(shuō)明
目錄
1介紹..................................................31.1前言................................................32編譯器................................................42.1PL/X編譯器結(jié)構(gòu)概述.................................42.2語(yǔ)法元素............................................62.3語(yǔ)法圖..............................................72.4判斷是否符合兩條限制規(guī)則...........................152.5語(yǔ)法出錯(cuò)表定義.....................................183虛擬機(jī)...............................................193.1虛擬機(jī)組織結(jié)構(gòu).....................................193.2虛擬機(jī)指令格式.....................................204程序設(shè)計(jì).............................................234.1全局變量、全局常量.................................234.2函數(shù)接口...........................................305程序測(cè)試.............................................396課程設(shè)計(jì)總結(jié).........................................407參考文獻(xiàn).............................................41
2編譯原理設(shè)計(jì)說(shuō)明
1介紹
1.1前言
根據(jù)課程設(shè)計(jì)要求制作PL/X語(yǔ)言的編譯器,完成詞法分析、語(yǔ)法分析、語(yǔ)義分析及代碼生成、出錯(cuò)處理和解釋運(yùn)行程序,并添加一定的擴(kuò)展,最終實(shí)現(xiàn)一個(gè)PL/X的編譯器。
所完成擴(kuò)展點(diǎn)說(shuō)明:1)支持三種注釋a)單行注釋b)/*---*/多行注釋c)(*---*)多行注釋
2)支持read語(yǔ)句,因此可從終端獲取輸入3)支持write語(yǔ)句,因此可從終端輸出4)支持for語(yǔ)句5)支持do…while語(yǔ)句6)call過(guò)程7)求余運(yùn)算%8)整數(shù)的奇偶o(jì)dd
3編譯原理設(shè)計(jì)說(shuō)明
9)冪運(yùn)行**10)求階乘!11)求和$
關(guān)于出錯(cuò)處理:分為詞法分析錯(cuò)誤、句法分析錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤(如除數(shù)為0)
允許變量名或函數(shù)名重復(fù),但訪問(wèn)的時(shí)候以最后一次聲明的為有效
2編譯器
2.1PL/X編譯器結(jié)構(gòu)概述
圖1PL/X編譯程序的結(jié)構(gòu)圖
圖2PL/X的解釋執(zhí)行結(jié)構(gòu)
4編譯原理設(shè)計(jì)說(shuō)明
圖3PL/X編譯程序總體流程圖
語(yǔ)法分析過(guò)程PROG是整個(gè)編譯過(guò)程的核心,是指開(kāi)始由主程序調(diào)用GETSYM取一個(gè)單詞,再調(diào)用語(yǔ)法分析過(guò)程PROG,PROG由當(dāng)前單詞根據(jù)語(yǔ)法規(guī)則再調(diào)用其它過(guò)程,如說(shuō)明處理、代碼生成或出錯(cuò)處理等過(guò)程進(jìn)行分析,當(dāng)分析完一個(gè)單詞后,PROG再調(diào)用GETSYM取下一個(gè)單詞,一直重復(fù)到當(dāng)前單詞為結(jié)束符"."表明源程序已分析結(jié)束。若未取到結(jié)束符".",而源程序已沒(méi)有輸入符號(hào),這時(shí)表明源程序有錯(cuò)誤,無(wú)法再繼續(xù)分析。
5編譯原理設(shè)計(jì)說(shuō)明
圖4PL/X過(guò)程調(diào)用相關(guān)示意圖
2.2語(yǔ)法元素關(guān)鍵字:
"and","begin","call","case","constant","do","else","end","false","for","if","integer","logical","not","or",“odd”,"procedure","program","read","repeat","switch","then","true","until","while","write"
6編譯原理設(shè)計(jì)說(shuō)明
操作符:
".",";","**","++",“--","+","-","*","/","%","=","=","==","!","+=","-=","*=","/="2.3語(yǔ)法圖
程序
程序體
程序體.const,;var,ident=numberident;procedureident;;程序體語(yǔ)句編譯原理
語(yǔ)句序列語(yǔ)句條件
設(shè)計(jì)說(shuō)明
語(yǔ)句;ident:=表達(dá)式callidentbegin語(yǔ)句序列endif條件then語(yǔ)句while條件do語(yǔ)句odd表達(dá)式表達(dá)式=<>=表達(dá)式編譯原理
表達(dá)式項(xiàng)因子
設(shè)計(jì)說(shuō)明
+項(xiàng)-+-項(xiàng)因子*/**%因子++--identnumber(表達(dá)式)編譯原理
設(shè)計(jì)說(shuō)明
1)prog="program"ds{proc}"begin"ss"end""."
2)proc="procedure"aident[ds]"begin"ss"end"
3)ds=d{";"d}
4)d="integer"aident{","aident}|
"logical"bident{","bident}|
"constant"aident"="number{","aident"="number}
10編譯原理設(shè)計(jì)說(shuō)明
5)ss=s{;s}
6)s=aident":="ae|bident":="be|
"if"be"then"ss["else"ss]"end"|"while"be"do"ss"end"|"repeat"ss"until"be|"write"ae."read"aident|bident"for"s;be;s"do"ss"end"
11編譯原理設(shè)計(jì)說(shuō)明
"call"procedure
"do"ss".""while"be"end"
7)ae=["-"]at{("-"|"+")at}
8)at=af1{("*"|"/")af1}.
編譯原理設(shè)計(jì)說(shuō)明
9)af1=af{("%"|"**")af}.//擴(kuò)展的求余運(yùn)算
10)af=aident|number|"("ae")"|constant
11)be=bt{"or"bt}
編譯原理設(shè)計(jì)說(shuō)明
12)bt=bf{"and"bf}
13)bf=bident|"true"|"false"|"not"bf|"("be")"|re1
14)re1=oddre
編譯原理設(shè)計(jì)說(shuō)明
15)re=(aident|number)("="|">"|">="|"編譯原理設(shè)計(jì)說(shuō)明
Follow(B1)={“begin”};B3={";"d}First(B3)={“;”};
Follow(B3)={“procedure”,“begin”};B4={","aident}First(B4)={“,”};
Follow(B4)={“;”,“procedure”,“begin”};B5={","bident}First(B5)={“,”};
Follow(B5)={“;”,“procedure”,“begin”};B6={","aident"="number}First(B6)={“,”};
Follow(B6)={“;”,“procedure”,“begin”};B7={;s}First(B7)={“;”};
Follow(B7)={“end”,“until”,“else”};B8=["else"ss]First(B8)={“else”};Follow(B8)={“end”};B9=["-"]First(B9)={“-”};
Follow(B9)={“(”,“aident”,“number”,“constant”};
16編譯原理設(shè)計(jì)說(shuō)明
B10={("-"|"+")at}First(B10)={“-”,“+”};
Follow(B10)={“end”,“until”,“else”,“)”,“and”,“or”};B11={"or"bt}First(B11)={“or”};
Follow(B11)={“then”,“do”,“;”,“)”,“end”,“until”,“else”};B12={("*"|"/")af}First(B12)={"*","/"};
Follow(B12)={“+”,“-“,“end”,“until”,“else”,“)”,“and”,“or”};B13={"and"bf}First(B13)={"and”};
Follow(B13)={“or”,“then”,“do”,“;”,“)”,“end”,“until”,“else”};
2).判斷是否符合兩條限制規(guī)則
規(guī)則1:找出圖中每一個(gè)分支點(diǎn),考察每個(gè)分支點(diǎn)的各個(gè)分支的頭符號(hào)是否相異
規(guī)則2:找出圖中每一個(gè)結(jié)構(gòu),考察每個(gè)結(jié)構(gòu)的頭符號(hào)集合與其跟隨符號(hào)是否相異非終結(jié)符名分程序
開(kāi)始符號(hào)集合constvarprocedureidentifcall17
后繼符號(hào)集合.;編譯原理設(shè)計(jì)說(shuō)明
beginwhilereadwrite語(yǔ)句條件identnumber+-(表達(dá)式identnumberropendthendo.;)項(xiàng)identnumber(rop+-endthendo.;+因子identnumber(-*/end","p":{"h":22.449,"w":40.982,"x":595.23,"y":編譯原理設(shè)計(jì)說(shuō)明
3虛擬機(jī)
3.1虛擬機(jī)組織結(jié)構(gòu)
程序存儲(chǔ)器指令存儲(chǔ)器數(shù)據(jù)存儲(chǔ)區(qū)
程序地址寄存器基本地址寄存器地址寄存器
1)程序存儲(chǔ)器指令類型enumfct{lit,opr,};指令
typedefstructinstruction{fctf;intl;inta;Int,jmp,jpc
lod,
sto,cal,
}Instruction;指令數(shù)組
Instructioncode[InMax];
19編譯原理設(shè)計(jì)說(shuō)明
2)指令寄存器inti;3)數(shù)據(jù)存儲(chǔ)器intstack[StMax]4)程序地址寄存器intp;
5)基本地址寄存器intb;6)地址寄存器intt;
3.2虛擬機(jī)指令格式
編譯程序所產(chǎn)生的目標(biāo)代碼是一個(gè)假想棧式計(jì)算機(jī)的匯編語(yǔ)言,可稱為類PCODE指令代碼,它不依賴任何具體計(jì)算機(jī),其指令集極為簡(jiǎn)單,指令格式也很單純,其格式如下:
fla其中f代表功能碼,l表示層次差,也就是變量或過(guò)程被引用的分程序與說(shuō)明該變量或過(guò)程的分程序之間的層次差。a的含意對(duì)不同的指令有所區(qū)別,對(duì)存取指令表示位移量,而對(duì)其它的指令則分別有不同的含義,見(jiàn)下面對(duì)每條指令的解釋說(shuō)明。
20編譯原理設(shè)計(jì)說(shuō)明
目標(biāo)指令有8條:
①LIT:將常量值取到運(yùn)行棧頂。a域?yàn)槌?shù)值。
②LOD:將變量放到棧頂。a域?yàn)樽兞吭谒f(shuō)明層中的相對(duì)位置,l為調(diào)用層與說(shuō)明層的層差值。
③STO:將棧頂?shù)膬?nèi)容送入某變量單元中。a,l域的含意同LOD指令。
④CAL:調(diào)用過(guò)程的指令。a為被調(diào)用過(guò)程的目標(biāo)程序入口地址,l為層差。
⑤INT:為被調(diào)用的過(guò)程(或主程序)在運(yùn)行棧中開(kāi)辟數(shù)據(jù)區(qū)。a域?yàn)殚_(kāi)辟的單元個(gè)數(shù)。
⑥JMP:無(wú)條件轉(zhuǎn)移指令,a為轉(zhuǎn)向地址。
⑦JPC:條件轉(zhuǎn)移指令,當(dāng)棧頂?shù)牟紶栔禐榉钦鏁r(shí),轉(zhuǎn)向a域的地址,否則順序執(zhí)行。
⑧OPR:關(guān)系運(yùn)算和算術(shù)運(yùn)算指令。將棧頂和次棧頂?shù)膬?nèi)容進(jìn)行運(yùn)算,結(jié)果存放在次棧頂,此外還可以是讀寫(xiě)等特殊功能的指令,具體操作由a域值給出。(詳見(jiàn)解釋執(zhí)行程序)。
指令功能表LIT0aLODlaSTOla將常數(shù)值取到棧頂,a為常數(shù)值將變量值取到棧頂,a為偏移量,l為層差將棧頂內(nèi)容送入某變量單元中,a為偏移量,l為層差
編譯原理設(shè)計(jì)說(shuō)明
CALlaINT0aJMP0aJPC0a調(diào)用過(guò)程,a為過(guò)程地址,l為層差在運(yùn)行棧中為被調(diào)用的過(guò)程開(kāi)辟a個(gè)單元的數(shù)據(jù)區(qū)無(wú)條件跳轉(zhuǎn)至a地址條件跳轉(zhuǎn),當(dāng)棧頂布爾值非真則跳轉(zhuǎn)至a地址,否則順序執(zhí)行OPR00OPR01OPR02OPR03OPR04OPR05過(guò)程調(diào)用結(jié)束后,返回調(diào)用點(diǎn)并退棧棧頂元素取反次棧頂與棧頂相加,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂減去棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂乘以棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂除以棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧增加了除數(shù)為0的判斷OPR06OPR07OPR08OPR09OPR010OPR011OPR012OPR013OPR014
棧頂元素的奇偶判斷,結(jié)果值在棧頂次棧頂與棧頂是否相等,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂與棧頂是否不等,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂是否小于棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂是否大于等于棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂是否大于棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧次棧頂是否小于等于棧頂,退兩個(gè)棧元素,結(jié)果值進(jìn)棧棧頂值輸出至屏幕22
編譯原理設(shè)計(jì)說(shuō)明
OPR015屏幕輸出換行OPR016OPR017OPR018
從命令行讀入一個(gè)輸入置于棧頂擴(kuò)展求余擴(kuò)展求冪4程序設(shè)計(jì)
4.1全局變量、全局常量
#defineNumber26//保留字的個(gè)數(shù)#defineTXMAX100//標(biāo)識(shí)符表的長(zhǎng)度#defineInMax200//指令最多條數(shù)#defineLeMax3//過(guò)程最大嵌套層次#defineStMax500//最大棧長(zhǎng)#defineIMax10//標(biāo)識(shí)符最長(zhǎng)長(zhǎng)度#defineDMax14//數(shù)字允許的最長(zhǎng)位數(shù)v#defineAddMax2048//最大地址
charch;//最近一次從程序中讀出的字符charsym[IMax];//最近讀出的符號(hào)charid[IMax];//最近讀出的標(biāo)識(shí)符intnum;//最近讀出的數(shù)值intcc;//行緩沖區(qū)指針
23編譯原理設(shè)計(jì)說(shuō)明
intll;//行緩沖區(qū)長(zhǎng)度intkk;//提高性能charline[100];//行緩沖區(qū)
chara[IMax];//存放當(dāng)前正在分析的詞intlineno;//當(dāng)前分析的行號(hào)inttx=0;//符號(hào)表序號(hào)intindex;//指令索引
charssym[13][IMax];//符號(hào)對(duì)應(yīng)的符號(hào)表charfsym[33][IMax];//用于出錯(cuò)處理interr;//記錄錯(cuò)誤數(shù)量intstack[StMax];
FILE*file;//指向要編譯的源文件
charword[Number][IMax]={//保留字"and","begin","call","case","constant","do","else","end",
24編譯原理設(shè)計(jì)說(shuō)明
"false","for","if","integer","logical","not","or","odd","procedure","program","read","repeat","switch","then","true","until","while","write"};
charwsym[Number][IMax]={//保留字對(duì)應(yīng)的符號(hào)表"andsym",
25編譯原理設(shè)計(jì)說(shuō)明
"beginsym","callsym","casesym","constsym","dosym","elsesym","endsym","falsesym","forsym","ifsym","intesym","logisym","notsym","orsym","oddsym","procsym","progsym","readsym","repeasym","switcsym","thensym","truesym",
26編譯原理設(shè)計(jì)說(shuō)明
"untilsym","whilesym","writesym"};
charD_first[4][IMax]={//聲明語(yǔ)句頭符號(hào)集"intesym","logisym","constant","over"};
charD_follow[3][IMax]={//聲明語(yǔ)句跟隨符號(hào)集"beginsym","procsym","over"};
charS_first[11][IMax]={//語(yǔ)句的頭符號(hào)集"adient",
27編譯原理設(shè)計(jì)說(shuō)明
"ifsym","whilesym","repeasym","writesym","forsym","callsym","readsym","dosym","switcsym","over"};
charS_follow[7][IMax]={//語(yǔ)句的跟隨符號(hào)集"endsym","elsesym","untilsym","dosym","period","over"};
28編譯原理設(shè)計(jì)說(shuō)明
enumfct{//指令類型lit,opr,lod,sto,cal,Int,jmp,jpc};
enumobjekt{//標(biāo)識(shí)符類型integer,logical,procedure,constant};
typedefstructinstruction{fctf;intl;inta;
29編譯原理設(shè)計(jì)說(shuō)明
}Instruction;
Instructioncode[InMax];//指令數(shù)組
typedefstructTable{//符號(hào)表定義charname[IMax];objektkind;intadr;intlevel;intsize;}Table;
Tabletable[TXMAX];//符號(hào)表
4.2函數(shù)接口函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型
voidgetch()從源文件中讀取字符voidgetsym()30
編譯原理設(shè)計(jì)說(shuō)明
參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述從源文件中取出字符串voidinit()初始化ssymvoidError(char*s1)s1:出錯(cuò)信息打印錯(cuò)誤voidenter(objekttype,int*pdx,intlev)type:符號(hào)類型pdx:當(dāng)前層次偏移量lev:符號(hào)層次函數(shù)描述返回值
符號(hào)記入符號(hào)表函數(shù)原型參數(shù)描述編譯原理函數(shù)描述函數(shù)原型返回值參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述intposition(char*id)id:所查詢的符號(hào)設(shè)計(jì)說(shuō)明在符號(hào)表中查詢符號(hào)boolIsIn(chars1[][IMax])id在符號(hào)表中序號(hào),返回-1表示不存在s1符號(hào)字符串?dāng)?shù)組檢查當(dāng)前符號(hào)是否在期望符號(hào)集合中true::在false:不在boolss(intlev)lev:當(dāng)前層次ss=s{;s}voidUnion(chars1[][IMax],chars2[][IMax])S1,s2為要合并的字符串?dāng)?shù)組用于出錯(cuò)處理:合并開(kāi)始符與跟隨符集合voidtest(chars1[][AL],chars2[][AL],char*err)S1:此程序段的跟隨符集合S2:此程序段的開(kāi)始符集合err:錯(cuò)誤信息
編譯原理設(shè)計(jì)說(shuō)明
函數(shù)描述當(dāng)前符號(hào)是否在期望符號(hào)集中,否則報(bào)錯(cuò)并跳過(guò)返回值函數(shù)原型參數(shù)描述voidgen(fctx,inty,intz)x:指令名y,z:指令對(duì)應(yīng)參數(shù)函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值
生成指令boolprog()prog="program"ds{proc}"begin"ss"end""."boolproc(intlev)lev:此過(guò)程層次proc="procedure"aident[ds]"begin"ss"end"編譯原理設(shè)計(jì)說(shuō)明
函數(shù)原型參數(shù)描述boolds(int*pdx,intlev)pdx:當(dāng)前層次偏移量lev:當(dāng)前層次函數(shù)描述返回值函數(shù)原型參數(shù)描述boold(int*pdx,intlev)pdx:當(dāng)前層次偏移量lev:當(dāng)前層次函數(shù)描述d="integer"aident{","aident}|"logical"bident{","bident}|"constant"aident"="number{","aident"="number}返回值
ds=d{";"d}
編譯原理設(shè)計(jì)說(shuō)明
函數(shù)原型參數(shù)描述函數(shù)描述bools(intlev)lev:當(dāng)前層次aident":="ae|bident":="be|"if"be"then"ss["else"ss]"end"|"while"be"do"ss"end"|"repeat"ss"until"be|"write"ae."read"aident|bident"for"s;be;s"do"ss"end""call"aident"do"ss".""while"be"end"返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述
boolae(intlev)lev:當(dāng)前層次ae=["-"]at{("-"|"+")at}boolat(intlev)lev:當(dāng)前層次35
編譯原理設(shè)計(jì)說(shuō)明
函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述at=af1{("*"|"/")af1}boolaf1(intlev)lev:當(dāng)前層次af1=af{("**"|"%")af}boolaf(intlev)lev:當(dāng)前層次af=aident|number|"("ae")"|constantboolbe(intlev)lev:當(dāng)前層次bt{"or"bt}boolbt(intlev)lev:當(dāng)前層次bt=bf{"and"bf}
編譯原理設(shè)計(jì)說(shuō)明
返回值函數(shù)原型參數(shù)描述函數(shù)描述boolbf(intlev)lev:當(dāng)前層次bf=bident|"true"|"false"|"not"bf|"("be")"|re1返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述boolre1(intlev)lev:當(dāng)前層次re1=oddreboolre(intlev)lev:當(dāng)前層次re=(aident|number)("="|">"|">="|"編譯原理設(shè)計(jì)說(shuō)明
函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述函數(shù)描述返回值函數(shù)原型參數(shù)描述voidlistall()顯示所有的指令voidinterpret()解釋程序intbase(intl,intb)l:當(dāng)前層次b:當(dāng)前基址函數(shù)描述返回值
尋找符號(hào)所在層次基址編譯原理設(shè)計(jì)說(shuō)明
5程序測(cè)試
1)右移
在詞法分析的voidgetsym()函數(shù)中添加:strcpy(sym,"shr");getch();}elsestrcpy(sym,"gtr");//檢測(cè)>符號(hào)在語(yǔ)法和語(yǔ)義分析的boolaf(intlev)函數(shù)中添加:if(strcmp(sym,"shr")==0){getsym();gen(lit,0,num);gen(opr,0,23);//shroperatinggetsym();}
在解釋程序中添加:case23://shrt--;stack[t]=(stack[t]>>stack[t+1]);BreakTest1:取余運(yùn)算測(cè)試目標(biāo)測(cè)試用例的plx源程序語(yǔ)法分析代碼生成解釋程序右移運(yùn)算//shrprogramintegerj,rbeginj:=257;writej;r:=j>>5;writerend.測(cè)編譯此程序試查看輸出步驟
編譯原理
測(cè)試結(jié)果設(shè)計(jì)說(shuō)明
6課程設(shè)計(jì)總結(jié)
通過(guò)這次課程設(shè)計(jì),我終于明白了做一個(gè)編譯器的是多么的不容易。每一條語(yǔ)句都需要那么多的考慮,每執(zhí)行一條語(yǔ)句需要做的是很多的指令。我做這個(gè)程序的時(shí)候遇到了很多困難,是我以前沒(méi)有遇到過(guò)的。
在自己的思考及老師,同學(xué)的幫助下擴(kuò)充了右移運(yùn)算的功能,
因水平和時(shí)間有限,目前也只能擴(kuò)充這一個(gè)功能了。
40編譯原理設(shè)計(jì)說(shuō)明
7參考文獻(xiàn)
[1]嚴(yán)蔚敏,吳偉國(guó).數(shù)據(jù)結(jié)構(gòu).北京:清華大學(xué)出版社,201*
[2]陳火旺,劉春林等.程序設(shè)計(jì)語(yǔ)言編譯原理(第3版).北京:國(guó)防工業(yè)出版社,201*[3]網(wǎng)絡(luò)資料
友情提示:本文中關(guān)于《夏彥 一周工作總結(jié)》給出的范例僅供您參考拓展思維使用,夏彥 一周工作總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。