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

正文內(nèi)容

編譯原理課程設(shè)計(jì)報(bào)告(格式)-閱讀頁(yè)

2024-11-10 22:06本頁(yè)面
  

【正文】 NT){i= position(id,tx)。elseswitch(table[i].kind){case CONSTANT:gen(LIT,0,table[i].)。case VARIABLE:gen(LOD,levtable[i].,table[i].)。case PROCEDURE:error(21)。}getsym()。num= 0。getsym()。symset tmp=fsys。expression(tmp,tx,lev)。elseerror(22)。} }//factor end// 條件處理void PL0::condition(symset fsys,int tx,int lev){ symbol relop。(EQL),(NEQ),(LSS),(LEQ),(GTR),(GEQ)。expression(fsys,tx,lev)。} else {expression(tmp,tx,lev)。else{relop= sym。expression(fsys,tx,lev)。break。break。break。break。break。break。if(err10){coutcoutt= t+1。break。p= s[t+3]。break。break。s[t]= s[t]+s[t+1]。case 3: t= t1。break。s[t]= s[t]*s[t+1]。case 5: t= t1。break。elses[t]=0。case 8: t= t1。elses[t]=0。case 9: t= t1。elses[t]=1。case 10: t= t1。elses[t]=0。case 11: t= t1。elses[t]=0。case 12: t= t1。elses[t]=0。case 13: t= t1。elses[t]=0。case 14: couts[t]。}。case LOD:t= t+1。break。t= t1。case CAL:// generate new block marks[t+1]= base(,b,s)。s[t+3]= p。p=。case INT:t= t+。case JMP:p= 。case JPC:if(s[t] == 0)p= 。break。cout// 通過(guò)靜態(tài)鏈求出數(shù)據(jù)區(qū)的基地址int PL0::base(int l,int b,int s[]){ int b1。//find base l levels down while(l0){b1= s[b1]。} return b1。ifprintf(fout,”%d %s %d %dn “,i,mnemonic[code[i].f],code[i].l,code[i].a)。symset fsys。(CONSTSYM),(VARSYM),(PROCSYM)。()。// 分程序分析處理功能()。// 對(duì)目標(biāo)代碼的解釋執(zhí)行程序} 實(shí)驗(yàn)運(yùn)行結(jié)果:運(yùn)行的的文件見下圖右側(cè):實(shí)驗(yàn)中我是固定了文件名的,可以是改寫成動(dòng)態(tài)輸入,由于在測(cè)試中我把所有的測(cè)試語(yǔ)句都放在同一個(gè)文件中了,沒(méi)有太多的必要。在實(shí)現(xiàn)此程序中,由于要實(shí)現(xiàn)關(guān)鍵字和符號(hào)表中字段的搜索,實(shí)現(xiàn)中就必須注意快速查找的方法,而在實(shí)現(xiàn)的過(guò)程中多次用到了二分搜索的方法,這是個(gè)比較快的搜索方法。通過(guò)本次的課設(shè)我知道了一個(gè)算法的設(shè)計(jì)是需要靜下心來(lái)仔細(xì)的研究的,且實(shí)現(xiàn)中必須先了解程序的整個(gè)流程,也就是說(shuō)在編程中首先必須看懂那些對(duì)應(yīng)的UML圖,只有在圖的指導(dǎo)下,編程中才不會(huì)盲目,也有一定的方向性。第三篇:編譯原理課程設(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序列。詞法分析器具備預(yù)處理功能。若語(yǔ)法正確,則用語(yǔ)法制導(dǎo)翻譯法進(jìn)行語(yǔ)義翻譯;生成并打印出語(yǔ)法樹;若語(yǔ)法錯(cuò)誤,要求指出出錯(cuò)性質(zhì)和出錯(cuò)位置(行號(hào))。通過(guò)此次課程設(shè)計(jì),提高了我們的獨(dú)立分析問(wèn)題、解決問(wèn)題的能力,以及系統(tǒng)軟件設(shè)計(jì)的能力; 提高程序設(shè)計(jì)能力、程序調(diào)試能力,團(tuán)結(jié)協(xié)作能力關(guān)鍵詞:詞法分析,語(yǔ)法分析,四元式生成,錯(cuò)誤處理,符號(hào)表生成,語(yǔ)義動(dòng)作插入,中間代碼優(yōu)化,生成目標(biāo)代碼 [在此處鍵入]目錄摘要 設(shè)計(jì)任務(wù) 設(shè)計(jì)要求(流程) 詞法分析模塊 功能 數(shù)據(jù)結(jié)構(gòu) 算法 語(yǔ)法分析模塊 數(shù)據(jù)結(jié)構(gòu) 符號(hào)表模塊 數(shù)據(jù)結(jié)構(gòu) 四元式模塊[在此處鍵入] 數(shù)據(jù)結(jié)構(gòu) 語(yǔ)義動(dòng)作分析模塊 數(shù)據(jù)結(jié)構(gòu) 錯(cuò)誤處理模塊 數(shù)據(jù)結(jié)構(gòu) 目標(biāo)代碼模塊 數(shù)據(jù)結(jié)構(gòu) 程序流程圖 程序說(shuō)明 實(shí)驗(yàn)結(jié)果 。[在此處鍵入]編譯器是將C語(yǔ)言翻譯為匯編語(yǔ)言代碼的計(jì)算機(jī)程序。通常地,源程序?yàn)楦呒?jí)語(yǔ)言(highlevel language),C語(yǔ)言程序,而目標(biāo)則是 機(jī)器語(yǔ)言的目標(biāo)代碼(object code),也就是可以在計(jì)算機(jī)硬件中運(yùn)行的機(jī)器代碼軟件程序。 要求:(1)設(shè)計(jì)詞法分析器設(shè)計(jì)各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計(jì)種別碼。功能包括:。(2)語(yǔ)法分析要求用學(xué)習(xí)過(guò)的自底向上或自頂向下的分析方法等,實(shí)現(xiàn)對(duì)表達(dá)式、各種說(shuō)明語(yǔ)句、控制語(yǔ)句進(jìn)行語(yǔ)法分析。(流程)本節(jié)主要分析程序的代碼結(jié)構(gòu)和代碼工程文件的劃分。工程分為幾個(gè)文件:,Four_Yuan,cs,)。Lexical類主要的工作是詞法分析獲取Token。在處理過(guò)程中,Token類的對(duì)象作為L(zhǎng)exical類的一個(gè)成員變量,配合Grammer類進(jìn)行語(yǔ)法分析。,Four_Yuan,cs,,他們分別是Lexical類聲明文件、Lexical類實(shí)現(xiàn)文件、Grammer類聲明文件、Grammer類實(shí)現(xiàn)文件。它們的關(guān)系是這樣的:Grammer類的一個(gè)成員變量temp首先對(duì)源程序刪除注釋,然后進(jìn)行詞法分析獲取所有Token,并將獲取的Token存儲(chǔ)在Token對(duì)象的tokenList(List類型)中。同時(shí),這也是程序的流程。詞法分析階段的代碼被封裝成一個(gè)類——Lexical,Token中主要是Lexical類的聲明代碼。Lexical類的代碼結(jié)構(gòu)和主要的成員變量和函數(shù)及其含義如下圖所示:算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),其基本思想是[在此處鍵入]根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號(hào)。⑴ 關(guān)鍵字表的初值。如能查到匹配的單詞,則該單詞為關(guān)鍵字,否則為一般標(biāo)識(shí)符。Token定義Token定義:Token類型(TokenType): 語(yǔ)法分析模塊語(yǔ)法分析是編譯過(guò)程的一個(gè)邏輯階段。amp。 數(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ì)信息并輸出。public static string PrintErrorList()把所有發(fā)現(xiàn)的錯(cuò)誤格式化后統(tǒng)一輸出。 目標(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è)試打開文件測(cè)試保存文件如果沒(méi)打開文件,直接敲代碼,點(diǎn)保存時(shí)會(huì)彈出另存為窗口[在此處鍵入]測(cè)試錯(cuò)誤檢測(cè),程序缺少main函數(shù)的類型,錯(cuò)誤列表中顯示第一行函數(shù)缺少錯(cuò)誤類型。39。[在此處鍵入]測(cè)試優(yōu)化,輸入課件中的代碼,結(jié)果與課件一樣。直接拷貝好歹也檢查一下錯(cuò)誤對(duì)于編譯原理的這次課程設(shè)計(jì),自己經(jīng)歷了從剛開始的不懂224。理論知識(shí)的了解224。完成基本功能224。自己著手寫詞法分析的時(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ǔ)法分析使用。充分了解了詞法分析的任務(wù)之后,就開始理論知識(shí)的學(xué)習(xí)。這只是詞法分析的原始代碼,在之后還進(jìn)行了兩次徹底的改動(dòng)。再后來(lái)寫報(bào)告的時(shí)候,發(fā)現(xiàn)分析出Token的那個(gè)DFA并不是最簡(jiǎn)的,有很多多余的狀態(tài),完全可以用一個(gè)flag標(biāo)志來(lái)標(biāo)識(shí),從而簡(jiǎn)化代碼結(jié)構(gòu),于是又重寫了一次詞法分析函數(shù)scan()的代碼,將狀態(tài)縮減為5個(gè),且不再用15來(lái)表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時(shí)為了簡(jiǎn)化代碼將輸出Token到文件的部分從scan()中剝離開來(lái),而在Lexical類中加了一個(gè)printToken()的函數(shù),使scan()函數(shù)邏輯更加清晰,使讀者能夠容易地將代碼與DFA進(jìn)行查看比照。首先自己對(duì)遞歸向下分析法進(jìn)行了學(xué)習(xí),將書上的幾個(gè)遞歸向下分析的偽代碼看過(guò)之后,自己對(duì)遞歸向下的分析方法的原理有了初步的認(rèn)識(shí),大概知道了根據(jù)文法怎么分析,但是對(duì)于如何編寫代碼卻還在此處鍵入]是難以下手,于是就對(duì)照TINY語(yǔ)言的文法看了幾遍書后面的TINY語(yǔ)言的遞歸向下分析的語(yǔ)法分析程序,這樣就基本知道了C語(yǔ)言的語(yǔ)法分析程序怎么寫。由于在編寫代碼的過(guò)程中需要確定分析是否正確或選擇多個(gè)文法中的某一個(gè)文法進(jìn)行分析,有時(shí)必須探測(cè)需要的或下一個(gè)Token的類型,在這種情況下需要求First集合,在推導(dǎo)中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據(jù)求出的First集合和Follow集合進(jìn)行判斷,以確定程序的走向。通過(guò)這次的編譯原理課程的學(xué)習(xí)和實(shí)踐,自己獲益良多。語(yǔ)法分析主要能根據(jù)遞歸向下的分析思想和C文法對(duì)詞法分析獲取的Token進(jìn)行語(yǔ)法分析,能夠構(gòu)造出語(yǔ)法樹,能夠判別語(yǔ)法分析過(guò)程中是否出錯(cuò)以及出錯(cuò)位置和錯(cuò)誤類型。此外,對(duì)以前那些已掌握的知識(shí)有了溫習(xí)和動(dòng)手鍛煉的機(jī)會(huì)。由于以前編寫代碼都是使用JAVA語(yǔ)言,所以C/C++很多內(nèi)容都忘記了,通過(guò)本次的實(shí)踐,自己又重新拾起了以前的知識(shí)。此外,對(duì)于文檔的編寫和美化自己也獲得了許多有用的經(jīng)驗(yàn)。在基本實(shí)驗(yàn)完成的基礎(chǔ)上,逐步完成課程設(shè)計(jì)。課程設(shè)計(jì)的任務(wù)(1)設(shè)計(jì)符號(hào)表確定符號(hào)表的組織方式,一般應(yīng)包括名字欄和信息欄,其中名字欄作為關(guān)鍵字。如果該名字在符號(hào)表中不存在,則將其加入到符號(hào)表中,否則返回指向該名字的指針;:從符號(hào)表中刪除給定名字的表項(xiàng)。將詞法分析器設(shè)計(jì)成供語(yǔ)法分析器調(diào)用的子程序。將不翻譯的注釋等符號(hào)先濾掉,只保留要翻譯的符號(hào)串,即要求設(shè)計(jì)一個(gè)供詞法分析調(diào)用的預(yù)處理子程序;;;(種別碼,屬性值)。若語(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))。(4)優(yōu)化器:設(shè)計(jì)出劃分基本塊的算法,在每一個(gè)基本塊中實(shí)現(xiàn):合并已知量、刪除多余運(yùn)算和刪除無(wú)用賦值三種局部?jī)?yōu)化。:只做一重循環(huán)優(yōu)化,完成代碼外提,強(qiáng)度削弱和刪除歸納變量等三種優(yōu)化。(5)目標(biāo)代碼生成器能完成指定寄存器個(gè)數(shù)的情況下將一中間代碼程序段翻譯成匯編語(yǔ)言目標(biāo)代碼(匯編指令應(yīng)包括加、減、乘、除),要求指令條數(shù)最少的情況下,盡量使用寄存器,盡量少訪問(wèn)內(nèi)存,這樣才能做到運(yùn)行效率高。要求各函數(shù)和過(guò)程應(yīng)有框圖描述,有功能說(shuō)明,有入口和出口參數(shù)說(shuō)明。要求輸入一小段完整的C語(yǔ)言源程序,輸出各編譯階段的運(yùn)行結(jié)果。作業(yè)提交最晚在期末(第17周課程結(jié)束時(shí))提交紙質(zhì)作業(yè)及可運(yùn)行程序,格式參考學(xué)院的規(guī)定課程設(shè)計(jì)任務(wù)書模板。通過(guò)該課程設(shè)計(jì),收獲頗多。通過(guò)把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來(lái)以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。三、通過(guò)該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把學(xué)過(guò)的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過(guò)自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)理論知識(shí)的理解。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì),在程序調(diào)試時(shí),注意指針,將不必要的命令去除。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1