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

正文內(nèi)容

編譯原理課程設(shè)計報告-閱讀頁

2024-11-10 23:33本頁面
  

【正文】 t 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// 通過靜態(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)。()。// 分程序分析處理功能()。// 對目標代碼的解釋執(zhí)行程序} 實驗運行結(jié)果:運行的的文件見下圖右側(cè):實驗中我是固定了文件名的,可以是改寫成動態(tài)輸入,由于在測試中我把所有的測試語句都放在同一個文件中了,沒有太多的必要。在實現(xiàn)此程序中,由于要實現(xiàn)關(guān)鍵字和符號表中字段的搜索,實現(xiàn)中就必須注意快速查找的方法,而在實現(xiàn)的過程中多次用到了二分搜索的方法,這是個比較快的搜索方法。通過本次的課設(shè)我知道了一個算法的設(shè)計是需要靜下心來仔細的研究的,且實現(xiàn)中必須先了解程序的整個流程,也就是說在編程中首先必須看懂那些對應(yīng)的UML圖,只有在圖的指導(dǎo)下,編程中才不會盲目,也有一定的方向性。第二篇:編譯原理課程設(shè)計報告(格式)編譯原理課程設(shè)計報告課題名稱:提交文檔學(xué)生姓名:提交文檔學(xué)生學(xué)號:同組 成 員 名 單:無指導(dǎo) 教 師 姓 名:指導(dǎo)教師評閱成績:指導(dǎo)教師評閱意見:提交報告時間:年月日構(gòu)造的編譯器的組成部分,能實現(xiàn)的功能。lll標準測試程序的分析結(jié)果 修改后的測試程序分析結(jié)果(正確和錯誤)詞法分析和語法分析的結(jié)果輸出(P79,P182)ll 收獲 不足第三篇:編譯原理課程設(shè)計課 程 設(shè) 計 報 告設(shè)計題目:一個簡單文法的編譯器前端的設(shè)計與實現(xiàn)班級: 計算機1206 組長學(xué)號:201239 組長姓名:閆智宣 指導(dǎo)教師:李曉華 設(shè)計時間:2014年12月[在此處鍵入]設(shè)計分工組長學(xué)號及姓名: 20123974閆智宣分工:語法分析,四元式生成,目標代碼優(yōu)化及生成 組員1學(xué)號及姓名:20123977廖峭 分工:詞法分析,錯誤處理 組員2學(xué)號及姓名:20123959郭天龍分工:符號表生成,語義動作插入,操作界面[在此處鍵入]摘要編譯原理課程設(shè)計是通過C語言編譯器相關(guān)子系統(tǒng)的設(shè)計,進一步加深對編譯器構(gòu)造的理解;第一部分詞法分析,設(shè)計各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計種別碼,制作掃描器識別一個個單詞,返回值為識別碼的序號,返回Token序列。詞法分析器具備預(yù)處理功能。若語法正確,則用語法制導(dǎo)翻譯法進行語義翻譯;生成并打印出語法樹;若語法錯誤,要求指出出錯性質(zhì)和出錯位置(行號)。通過此次課程設(shè)計,提高了我們的獨立分析問題、解決問題的能力,以及系統(tǒng)軟件設(shè)計的能力; 提高程序設(shè)計能力、程序調(diào)試能力,團結(jié)協(xié)作能力關(guān)鍵詞:詞法分析,語法分析,四元式生成,錯誤處理,符號表生成,語義動作插入,中間代碼優(yōu)化,生成目標代碼 [在此處鍵入]目錄摘要 設(shè)計任務(wù) 設(shè)計要求(流程) 詞法分析模塊 功能 數(shù)據(jù)結(jié)構(gòu) 算法 語法分析模塊 數(shù)據(jù)結(jié)構(gòu) 符號表模塊 數(shù)據(jù)結(jié)構(gòu) 四元式模塊[在此處鍵入] 數(shù)據(jù)結(jié)構(gòu) 語義動作分析模塊 數(shù)據(jù)結(jié)構(gòu) 錯誤處理模塊 數(shù)據(jù)結(jié)構(gòu) 目標代碼模塊 數(shù)據(jù)結(jié)構(gòu) 程序流程圖 程序說明 實驗結(jié)果 。[在此處鍵入]編譯器是將C語言翻譯為匯編語言代碼的計算機程序。通常地,源程序為高級語言(highlevel language),C語言程序,而目標則是 機器語言的目標代碼(object code),也就是可以在計算機硬件中運行的機器代碼軟件程序。 要求:(1)設(shè)計詞法分析器設(shè)計各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計種別碼。功能包括:。(2)語法分析要求用學(xué)習(xí)過的自底向上或自頂向下的分析方法等,實現(xiàn)對表達式、各種說明語句、控制語句進行語法分析。(流程)本節(jié)主要分析程序的代碼結(jié)構(gòu)和代碼工程文件的劃分。工程分為幾個文件:,Four_Yuan,cs,)。Lexical類主要的工作是詞法分析獲取Token。在處理過程中,Token類的對象作為Lexical類的一個成員變量,配合Grammer類進行語法分析。,Four_Yuan,cs,,他們分別是Lexical類聲明文件、Lexical類實現(xiàn)文件、Grammer類聲明文件、Grammer類實現(xiàn)文件。它們的關(guān)系是這樣的:Grammer類的一個成員變量temp首先對源程序刪除注釋,然后進行詞法分析獲取所有Token,并將獲取的Token存儲在Token對象的tokenList(List類型)中。同時,這也是程序的流程。詞法分析階段的代碼被封裝成一個類——Lexical,Token中主要是Lexical類的聲明代碼。Lexical類的代碼結(jié)構(gòu)和主要的成員變量和函數(shù)及其含義如下圖所示:算法的基本任務(wù)是從字符串表示的源程序中識別出具有獨立意義的單詞符號,其基本思想是[在此處鍵入]根據(jù)掃描到單詞符號的第一個字符的種類,拼出相應(yīng)的單詞符號。⑴ 關(guān)鍵字表的初值。如能查到匹配的單詞,則該單詞為關(guān)鍵字,否則為一般標識符。Token定義Token定義:Token類型(TokenType): 語法分析模塊語法分析是編譯過程的一個邏輯階段。amp。 數(shù)據(jù)結(jié)構(gòu)在此處鍵入] 四元式模塊四元式為中間代碼,編譯程序進行完語義分析后,先生成中間代碼作為過渡,此時中間代碼與目標代碼已經(jīng)比較相似 數(shù)據(jù)結(jié)構(gòu)[ 在此處鍵入]在語法分析中嵌入相應(yī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,_,_,_) 錯誤處理模塊 保存運行時發(fā)現(xiàn)的錯誤,儲存行號已經(jīng)詳細信息并輸出。public static string PrintErrorList()把所有發(fā)現(xiàn)的錯誤格式化后統(tǒng)一輸出。 目標代碼模塊目標代碼生成把優(yōu)化后的中間代碼變換成目標代碼,此處的目標代碼為匯編代碼,采用單寄存器生成目標代碼 數(shù)據(jù)結(jié)構(gòu)[在此處鍵入]對于一個基本塊有如下流程圖W:操作符,B:第一操作數(shù),C:第二操作數(shù),R:寄存器網(wǎng)上找一段話抄上 [在此處鍵入]測試打開文件測試保存文件如果沒打開文件,直接敲代碼,點保存時會彈出另存為窗口[在此處鍵入]測試錯誤檢測,程序缺少main函數(shù)的類型,錯誤列表中顯示第一行函數(shù)缺少錯誤類型。39。[在此處鍵入]測試優(yōu)化,輸入課件中的代碼,結(jié)果與課件一樣。直接拷貝好歹也檢查一下錯誤對于編譯原理的這次課程設(shè)計,自己經(jīng)歷了從剛開始的不懂224。理論知識的了解224。完成基本功能224。自己著手寫詞法分析的時候還不清楚詞法分析的任務(wù)內(nèi)容,還不知道詞法分析的結(jié)果是什么,詞法分析出錯的情況和類型有哪些,也總是將詞法分析和語法分析混在一起,不明白哪些錯誤在詞法分析中報,哪些錯誤在語法分析中判斷,后來經(jīng)過查書、網(wǎng)上資料、請教同學(xué)等途徑逐步清晰了詞法分析的工作內(nèi)容是從源代碼文件中獲取出Token,供語法分析使用。充分了解了詞法分析的任務(wù)之后,就開始理論知識的學(xué)習(xí)。這只是詞法分析的原始代碼,在之后還進行了兩次徹底的改動。再后來寫報告的時候,發(fā)現(xiàn)分析出Token的那個DFA并不是最簡的,有很多多余的狀態(tài),完全可以用一個flag標志來標識,從而簡化代碼結(jié)構(gòu),于是又重寫了一次詞法分析函數(shù)scan()的代碼,將狀態(tài)縮減為5個,且不再用15來表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時為了簡化代碼將輸出Token到文件的部分從scan()中剝離開來,而在Lexical類中加了一個printToken()的函數(shù),使scan()函數(shù)邏輯更加清晰,使讀者能夠容易地將代碼與DFA進行查看比照。首先自己對遞歸向下分析法進行了學(xué)習(xí),將書上的幾個遞歸向下分析的偽代碼看過之后,自己對遞歸向下的分析方法的原理有了初步的認識,大概知道了根據(jù)文法怎么分析,但是對于如何編寫代碼卻還在此處鍵入]是難以下手,于是就對照TINY語言的文法看了幾遍書后面的TINY語言的遞歸向下分析的語法分析程序,這樣就基本知道了C語言的語法分析程序怎么寫。由于在編寫代碼的過程中需要確定分析是否正確或選擇多個文法中的某一個文法進行分析,有時必須探測需要的或下一個Token的類型,在這種情況下需要求First集合,在推導(dǎo)中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據(jù)求出的First集合和Follow集合進行判斷,以確定程序的走向。通過這次的編譯原理課程的學(xué)習(xí)和實踐,自己獲益良多。語法分析主要能根據(jù)遞歸向下的分析思想和C文法對詞法分析獲取的Token進行語法分析,能夠構(gòu)造出語法樹,能夠判別語法分析過程中是否出錯以及出錯位置和錯誤類型。此外,對以前那些已掌握的知識有了溫習(xí)和動手鍛煉的機會。由于以前編寫代碼都是使用JAVA語言,所以C/C++很多內(nèi)容都忘記了,通過本次的實踐,自己又重新拾起了以前的知識。此外,對于文檔的編寫和美化自己也獲得了許多有用的經(jīng)驗。在基本實驗完成的基礎(chǔ)上,逐步完成課程設(shè)計。課程設(shè)計的任務(wù)(1)設(shè)計符號表確定符號表的組織方式,一般應(yīng)包括名字欄和信息欄,其中名字欄作為關(guān)鍵字。如果該名字在符號表中不存在,則將其加入到符號表中,否則返回指向該名字的指針;:從符號表中刪除給定名字的表項。將詞法分析器設(shè)計成供語法分析器調(diào)用的子程序。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設(shè)計一個供詞法分析調(diào)用的預(yù)處理子程序;;;(種別碼,屬性值)。若語法正確,則用語法制導(dǎo)翻譯法進行語義翻譯:對說明語句,要求將說明的各符號記錄到相應(yīng)符號表中;對可執(zhí)行語句,應(yīng)產(chǎn)生出四元式中間代碼并填寫到三地址碼表中;若語法錯誤,要求指出出錯性質(zhì)和出錯位置(行號)。(4)優(yōu)化器:設(shè)計出劃分基本塊的算法,在每一個基本塊中實現(xiàn):合并已知量、刪除多余運算和刪除無用賦值三種局部優(yōu)化。:只做一重循環(huán)優(yōu)化,完成代碼外提,強度削弱和刪除歸納變量等三種優(yōu)化。(5)目標代碼生成器能完成指定寄存器個數(shù)的情況下將一中間代碼程序段翻譯成匯編語言目標代碼(匯編指令應(yīng)包括加、減、乘、除),要求指令條數(shù)最少的情況下,盡量使用寄存器,盡量少訪問內(nèi)存,這樣才能做到運行效率高。要求各函數(shù)和過程應(yīng)有框圖描述,有功能說明,有入口和出口參數(shù)說明。要求輸入一小段完整的C語言源程序,輸出各編譯階段的運行結(jié)果。作業(yè)提交最晚在期末(第17周課程結(jié)束時)提交紙質(zhì)作業(yè)及可運行程序,格式參考學(xué)院的規(guī)定課程設(shè)計任務(wù)書模板。通過該課程設(shè)計,收獲頗多。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計算機上實現(xiàn),把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。三、通過該課程設(shè)計,全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實現(xiàn)方法。把學(xué)過的計算機編譯原理的知識強化,能夠把課堂上學(xué)的知識通過自己設(shè)計的程序表示出來,加深了對理論知識的理解。課程設(shè)計中程序比較復(fù)雜,在調(diào)試時應(yīng)該仔細,在程序調(diào)試時,注意指針,將不必要的命令去除。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實現(xiàn),培養(yǎng)實踐動手能力和程序開發(fā)能力
點擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1