freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理課程設(shè)計(jì)報(bào)告-wenkub.com

2024-11-10 23:33 本頁(yè)面
   

【正文】 加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開(kāi)發(fā)能力的目的。把學(xué)過(guò)的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過(guò)自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)理論知識(shí)的理解。通過(guò)把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來(lái)以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。作業(yè)提交最晚在期末(第17周課程結(jié)束時(shí))提交紙質(zhì)作業(yè)及可運(yùn)行程序,格式參考學(xué)院的規(guī)定課程設(shè)計(jì)任務(wù)書模板。要求各函數(shù)和過(guò)程應(yīng)有框圖描述,有功能說(shuō)明,有入口和出口參數(shù)說(shuō)明。:只做一重循環(huán)優(yōu)化,完成代碼外提,強(qiáng)度削弱和刪除歸納變量等三種優(yōu)化。若語(yǔ)法正確,則用語(yǔ)法制導(dǎo)翻譯法進(jìn)行語(yǔ)義翻譯:對(duì)說(shuō)明語(yǔ)句,要求將說(shuō)明的各符號(hào)記錄到相應(yīng)符號(hào)表中;對(duì)可執(zhí)行語(yǔ)句,應(yīng)產(chǎn)生出四元式中間代碼并填寫到三地址碼表中;若語(yǔ)法錯(cuò)誤,要求指出出錯(cuò)性質(zhì)和出錯(cuò)位置(行號(hào))。將詞法分析器設(shè)計(jì)成供語(yǔ)法分析器調(diào)用的子程序。課程設(shè)計(jì)的任務(wù)(1)設(shè)計(jì)符號(hào)表確定符號(hào)表的組織方式,一般應(yīng)包括名字欄和信息欄,其中名字欄作為關(guān)鍵字。此外,對(duì)于文檔的編寫和美化自己也獲得了許多有用的經(jīng)驗(yàn)。此外,對(duì)以前那些已掌握的知識(shí)有了溫習(xí)和動(dòng)手鍛煉的機(jī)會(huì)。通過(guò)這次的編譯原理課程的學(xué)習(xí)和實(shí)踐,自己獲益良多。首先自己對(duì)遞歸向下分析法進(jìn)行了學(xué)習(xí),將書上的幾個(gè)遞歸向下分析的偽代碼看過(guò)之后,自己對(duì)遞歸向下的分析方法的原理有了初步的認(rèn)識(shí),大概知道了根據(jù)文法怎么分析,但是對(duì)于如何編寫代碼卻還在此處鍵入]是難以下手,于是就對(duì)照TINY語(yǔ)言的文法看了幾遍書后面的TINY語(yǔ)言的遞歸向下分析的語(yǔ)法分析程序,這樣就基本知道了C語(yǔ)言的語(yǔ)法分析程序怎么寫。這只是詞法分析的原始代碼,在之后還進(jìn)行了兩次徹底的改動(dòng)。自己著手寫詞法分析的時(shí)候還不清楚詞法分析的任務(wù)內(nèi)容,還不知道詞法分析的結(jié)果是什么,詞法分析出錯(cuò)的情況和類型有哪些,也總是將詞法分析和語(yǔ)法分析混在一起,不明白哪些錯(cuò)誤在詞法分析中報(bào),哪些錯(cuò)誤在語(yǔ)法分析中判斷,后來(lái)經(jīng)過(guò)查書、網(wǎng)上資料、請(qǐng)教同學(xué)等途徑逐步清晰了詞法分析的工作內(nèi)容是從源代碼文件中獲取出Token,供語(yǔ)法分析使用。理論知識(shí)的了解224。[在此處鍵入]測(cè)試優(yōu)化,輸入課件中的代碼,結(jié)果與課件一樣。 目標(biāo)代碼模塊目標(biāo)代碼生成把優(yōu)化后的中間代碼變換成目標(biāo)代碼,此處的目標(biāo)代碼為匯編代碼,采用單寄存器生成目標(biāo)代碼 數(shù)據(jù)結(jié)構(gòu)[在此處鍵入]對(duì)于一個(gè)基本塊有如下流程圖W:操作符,B:第一操作數(shù),C:第二操作數(shù),R:寄存器網(wǎng)上找一段話抄上 [在此處鍵入]測(cè)試打開(kāi)文件測(cè)試保存文件如果沒(méi)打開(kāi)文件,直接敲代碼,點(diǎn)保存時(shí)會(huì)彈出另存為窗口[在此處鍵入]測(cè)試錯(cuò)誤檢測(cè),程序缺少main函數(shù)的類型,錯(cuò)誤列表中顯示第一行函數(shù)缺少錯(cuò)誤類型。 數(shù)據(jù)結(jié)構(gòu)在此處鍵入] 四元式模塊四元式為中間代碼,編譯程序進(jìn)行完語(yǔ)義分析后,先生成中間代碼作為過(guò)渡,此時(shí)中間代碼與目標(biāo)代碼已經(jīng)比較相似 數(shù)據(jù)結(jié)構(gòu)[ 在此處鍵入]在語(yǔ)法分析中嵌入相應(yīng)的語(yǔ)義動(dòng)作,生成四元式 數(shù)據(jù)結(jié)構(gòu)[[在此處鍵入] GEQ(+)()(*)(/)(+,i1,i2,t)PUSH(i)ASSI(=)(=,t,_,POP)LABER(i)(lb,_,_,i)GOTO(i)(gt,_,_,i)IF(if)(if,a,_,_)EL(el)(el,_,_,_)IE(ie)(ie,_,_,_)WH()(wh,_,_,_)DO()(do,a,_,_)WE(we)(we,_,_,_) 錯(cuò)誤處理模塊 保存運(yùn)行時(shí)發(fā)現(xiàn)的錯(cuò)誤,儲(chǔ)存行號(hào)已經(jīng)詳細(xì)信息并輸出。Token定義Token定義:Token類型(TokenType): 語(yǔ)法分析模塊語(yǔ)法分析是編譯過(guò)程的一個(gè)邏輯階段。⑴ 關(guān)鍵字表的初值。詞法分析階段的代碼被封裝成一個(gè)類——Lexical,Token中主要是Lexical類的聲明代碼。它們的關(guān)系是這樣的:Grammer類的一個(gè)成員變量temp首先對(duì)源程序刪除注釋,然后進(jìn)行詞法分析獲取所有Token,并將獲取的Token存儲(chǔ)在Token對(duì)象的tokenList(List類型)中。在處理過(guò)程中,Token類的對(duì)象作為L(zhǎng)exical類的一個(gè)成員變量,配合Grammer類進(jìn)行語(yǔ)法分析。工程分為幾個(gè)文件:,Four_Yuan,cs,)。(2)語(yǔ)法分析要求用學(xué)習(xí)過(guò)的自底向上或自頂向下的分析方法等,實(shí)現(xiàn)對(duì)表達(dá)式、各種說(shuō)明語(yǔ)句、控制語(yǔ)句進(jìn)行語(yǔ)法分析。 要求:(1)設(shè)計(jì)詞法分析器設(shè)計(jì)各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計(jì)種別碼。[在此處鍵入]編譯器是將C語(yǔ)言翻譯為匯編語(yǔ)言代碼的計(jì)算機(jī)程序。若語(yǔ)法正確,則用語(yǔ)法制導(dǎo)翻譯法進(jìn)行語(yǔ)義翻譯;生成并打印出語(yǔ)法樹(shù);若語(yǔ)法錯(cuò)誤,要求指出出錯(cuò)性質(zhì)和出錯(cuò)位置(行號(hào))。lll標(biāo)準(zhǔn)測(cè)試程序的分析結(jié)果 修改后的測(cè)試程序分析結(jié)果(正確和錯(cuò)誤)詞法分析和語(yǔ)法分析的結(jié)果輸出(P79,P182)ll 收獲 不足第三篇:編譯原理課程設(shè)計(jì)課 程 設(shè) 計(jì) 報(bào) 告設(shè)計(jì)題目:一個(gè)簡(jiǎn)單文法的編譯器前端的設(shè)計(jì)與實(shí)現(xiàn)班級(jí): 計(jì)算機(jī)1206 組長(zhǎng)學(xué)號(hào):201239 組長(zhǎng)姓名:閆智宣 指導(dǎo)教師:李曉華 設(shè)計(jì)時(shí)間:2014年12月[在此處鍵入]設(shè)計(jì)分工組長(zhǎng)學(xué)號(hào)及姓名: 20123974閆智宣分工:語(yǔ)法分析,四元式生成,目標(biāo)代碼優(yōu)化及生成 組員1學(xué)號(hào)及姓名:20123977廖峭 分工:詞法分析,錯(cuò)誤處理 組員2學(xué)號(hào)及姓名:20123959郭天龍分工:符號(hào)表生成,語(yǔ)義動(dòng)作插入,操作界面[在此處鍵入]摘要編譯原理課程設(shè)計(jì)是通過(guò)C語(yǔ)言編譯器相關(guān)子系統(tǒng)的設(shè)計(jì),進(jìn)一步加深對(duì)編譯器構(gòu)造的理解;第一部分詞法分析,設(shè)計(jì)各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計(jì)種別碼,制作掃描器識(shí)別一個(gè)個(gè)單詞,返回值為識(shí)別碼的序號(hào),返回Token序列。通過(guò)本次的課設(shè)我知道了一個(gè)算法的設(shè)計(jì)是需要靜下心來(lái)仔細(xì)的研究的,且實(shí)現(xiàn)中必須先了解程序的整個(gè)流程,也就是說(shuō)在編程中首先必須看懂那些對(duì)應(yīng)的UML圖,只有在圖的指導(dǎo)下,編程中才不會(huì)盲目,也有一定的方向性。// 對(duì)目標(biāo)代碼的解釋執(zhí)行程序} 實(shí)驗(yàn)運(yùn)行結(jié)果:運(yùn)行的的文件見(jiàn)下圖右側(cè):實(shí)驗(yàn)中我是固定了文件名的,可以是改寫成動(dòng)態(tài)輸入,由于在測(cè)試中我把所有的測(cè)試語(yǔ)句都放在同一個(gè)文件中了,沒(méi)有太多的必要。()。symset fsys。} return b1。cout// 通過(guò)靜態(tài)鏈求出數(shù)據(jù)區(qū)的基地址int PL0::base(int l,int b,int s[]){ int b1。case JPC:if(s[t] == 0)p= 。case INT:t= t+。s[t+3]= p。t= t1。case LOD:t= t+1。case 14: couts[t]。case 13: t= t1。case 12: t= t1。case 11: t= t1。case 10: t= t1。case 9: t= t1。case 8: t= t1。break。s[t]= s[t]*s[t+1]。case 3: t= t1。break。p= s[t+3]。if(err10){coutcoutt= t+1。break。break。break。else{relop= sym。expression(fsys,tx,lev)。} }//factor end// 條件處理void PL0::condition(symset fsys,int tx,int lev){ symbol relop。expression(tmp,tx,lev)。getsym()。}getsym()。case VARIABLE:gen(LOD,levtable[i].,table[i].)。while((sym)!=()){if(sym ==IDENT){i= position(id,tx)。if(mulop ==TIMES)gen(OPR,0,4)。amp。for(int t=TIMES。elsegen(OPR,0,3)。symaddop= sym。if(addop ==MINUS)gen(OPR,0,1)。amp。symset tmp=fsys。}elseerror(34)。statement(temp1,tx,lev)。temp2 = statbegsys。temp1= fsys,(SEMICOLON),(UNTILSYM)。statement(fsys,tx,lev)。cx2= cx。// 記下當(dāng)前代碼分配位置,這是while循環(huán)的開(kāi)始位置getsym()。statement(tmp,tx,lev)。for(i=SEMICOLON。else if(sym=PERIOD){error(26)。tmp=statbegsys。symset tmp=fsys。code[cx1].a=cx。code[cx1].a= cx。gen(JPC,0,0)。condition(tmp,tx,lev)。} } else if(sym ==IFSYM){ getsym()。if(i == 0)error(11)。} gen(OPR,0,15)。gen(OPR,0,14)。symset tmp=fsys。while((sym)!=())getsym()。gen(STO,levtable[i].,table[i].)。if(sym==IDENT)i=position(id,tx)。if(i!= 0)gen(STO,levtable[i].,table[i].)。if(sym ==BECOMES)getsym()。if(i == 0)error(11)。if(listswitch)for(i= cx0。} if(sym!= RPAREN)} error(32)。} if(sym == COMMA)getsym()。getsym()。} elseerror(4)。}// constdeclaration end// 變量說(shuō)明處理void PL0::vardeclaration(intamp。getsym()。amp。}//position end// 常量定義處理void PL0::constdeclaration(intamp。strcpy(table[0].name, id)。break。table[tx].=dx。num=0。dx,int lev){ tx= tx+1。test(fsys,s2,8)。i ((symbol)i)。cx0= cx。}while((sym)!=())。}elseerror(5)。symset tmp = statbegsys。symset tmp = fsys。getsym()。elseerror(5)。do{vardeclaration(tx,dx,lev)。} if(sym ==SEMICOLON)getsym()。do{if(sym == CONSTSYM)// 處理常量聲明{getsym()。// 變量的個(gè)數(shù) tx0= tx。int dx。it!=()。}//gen end// 測(cè)試當(dāng)前單詞符號(hào)是否合法void PL0::test(symset s1,symset s2,int n){ if(sourceEnd)return。}code[cx].f= x。if(line[ll1]==10)ll。}cc= 0。// 其它符號(hào)的賦值getch()。){sym= GEQ。// extra stuff added to support 39。){sym= BECOMES。:39。getch()。sym= NUMBER。}while(i j)sym= wsym[k]。j= norw。kk= kk1。}while(isalpha(ch)||isdigit(ch))。// 檢測(cè)一個(gè)單詞長(zhǎng)度 do{ if(k al){a[k]= ch。 39。err= err+1。fout=fopen(destination,”w“)。 39。cc= 0。(CONSTSYM),(VARSYM),(PROCSYM)。strcpy(mnemonic[CAL],” cal “)。strcpy(mnemonic[LIT],” lit “)。]= GTR。39。ssym[39。]= EQL。)39。ssym[39。]= TIMES。39。ssym[39。memset(code,0,sizeof(code))。wsym[13]= UNTILSYM。wsym[9]= PROCSYM。wsym[5]= ELSESYM。wsym[1]= BEGINSYM。strcpy(word[13],”until“)。strcpy(word[9],”procedure“)。strcpy(word[5],”else“)。strcpy(word[1],”begin“)?!? ”error 0006: 過(guò)程說(shuō)明后的符號(hào)不正確(應(yīng)是語(yǔ)句開(kāi)始符或過(guò)程開(kāi)始符)“, ”error 0007: 應(yīng)是語(yǔ)句開(kāi)始符“, ”error 0008: 過(guò)程體內(nèi)語(yǔ)句部分的后跟符不正確“, ”error 0009: 程序皆為丟了句號(hào)‘.’“, ”error 0010: 語(yǔ)句之間漏了‘。執(zhí)行程序int base(int l,int b,int s[])。void arraydeclaration(intamp。void expression(symset fsys,int tx,int lev)。tx,intamp。的位置void constdeclaration(i
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1