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

正文內(nèi)容

編譯原理課程設(shè)計(jì)報(bào)告(格式)-資料下載頁

2024-11-10 22:06本頁面
  

【正文】 D 逗號表達(dá)式T 乘除算術(shù)表達(dá)式C 關(guān)系表達(dá)式L 邏輯表達(dá)式Q 標(biāo)識符或圓括號e 表示空i 表示標(biāo)識符 a)函數(shù)文法BZV()S[[在此處鍵入]b)語句塊文法PSP|eS{P} c)語句文法表達(dá)式語句文法SV=Egoto語句文法Si:SSgoto iif語句文法Sif(E)S[else S]while語句文法Swhile(E)S聲明語句文法SZVDD,VD|=ED|e d)表達(dá)式文法ET|E+T|ETTF|T*F|T/FCC|CL|C==C|C=LLQ|Lamp。amp。Q|L||i|(E)|!Q對應(yīng)于每個文法編寫如下遞歸下降子程序主程序(B)[在此處鍵入] [在此處鍵入] 符號表模塊進(jìn)行符號表的儲存,添加,更新,查找,保存標(biāo)識符活躍信息以及輸出。 數(shù)據(jù)結(jié)構(gòu)在此處鍵入] 四元式模塊四元式為中間代碼,編譯程序進(jìn)行完語義分析后,先生成中間代碼作為過渡,此時中間代碼與目標(biāo)代碼已經(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,_,_,_) 錯誤處理模塊 保存運(yùn)行時發(fā)現(xiàn)的錯誤,儲存行號已經(jīng)詳細(xì)信息并輸出。 數(shù)據(jù)結(jié)構(gòu) [在此處鍵入]public static void AddErrorMessage(int lineno,string content)函數(shù)用作在發(fā)現(xiàn)錯誤時保存錯誤信息以及行號。public static string PrintErrorList()把所有發(fā)現(xiàn)的錯誤格式化后統(tǒng)一輸出。錯誤信息在語法分析,語義分析,符號表檢錯中添加。 目標(biāo)代碼模塊目標(biāo)代碼生成把優(yōu)化后的中間代碼變換成目標(biāo)代碼,此處的目標(biāo)代碼為匯編代碼,采用單寄存器生成目標(biāo)代碼 數(shù)據(jù)結(jié)構(gòu)[在此處鍵入]對于一個基本塊有如下流程圖W:操作符,B:第一操作數(shù),C:第二操作數(shù),R:寄存器網(wǎng)上找一段話抄上 [在此處鍵入]測試打開文件測試保存文件如果沒打開文件,直接敲代碼,點(diǎn)保存時會彈出另存為窗口[在此處鍵入]測試錯誤檢測,程序缺少main函數(shù)的類型,錯誤列表中顯示第一行函數(shù)缺少錯誤類型。測試錯誤檢測,程序缺少分號,錯誤列表中顯示該行缺少語句結(jié)束標(biāo)志39。39。 單擊錯誤列表,會自動選定錯誤行編譯成功,生成并顯示token串、符號表、四元式與目標(biāo)代碼 [在此處鍵入]測試if與while語句,而且while嵌套在if當(dāng)中測試goto語句,結(jié)果正確。[在此處鍵入]測試優(yōu)化,輸入課件中的代碼,結(jié)果與課件一樣。陳火旺.《程序設(shè)計(jì)語言編譯原理》(第3版).北京:、美 Alfred Ravi Sethi Jeffrey ,姜守旭譯.《編譯原理》.24 [在此處鍵入]北京:、美 Kenneth .《編譯原理及實(shí)踐》.北京:、金成植著.《編譯程序構(gòu)造原理和實(shí)現(xiàn)技術(shù)》.北京:、體會和建議。直接拷貝好歹也檢查一下錯誤對于編譯原理的這次課程設(shè)計(jì),自己經(jīng)歷了從剛開始的不懂224。明白任務(wù)的要求和內(nèi)容224。理論知識的了解224。開始著手寫代碼224。完成基本功能224。根據(jù)DFA及自頂向下等理論修改完善代碼等這些過程。自己著手寫詞法分析的時候還不清楚詞法分析的任務(wù)內(nèi)容,還不知道詞法分析的結(jié)果是什么,詞法分析出錯的情況和類型有哪些,也總是將詞法分析和語法分析混在一起,不明白哪些錯誤在詞法分析中報(bào),哪些錯誤在語法分析中判斷,后來經(jīng)過查書、網(wǎng)上資料、請教同學(xué)等途徑逐步清晰了詞法分析的工作內(nèi)容是從源代碼文件中獲取出Token,供語法分析使用。在充分了解了語法分析需要哪些信息時,我才真正了解了詞法分析的工作內(nèi)容和目標(biāo),才知道詞法分析需要完成哪些任務(wù)獲取到哪些信息。充分了解了詞法分析的任務(wù)之后,就開始理論知識的學(xué)習(xí)。經(jīng)過揣摩書上的例子,自己理解和掌握了怎么設(shè)計(jì)過濾注釋和分析程序中Token的DFA,于是開始根據(jù)設(shè)計(jì)好的DFA進(jìn)行編碼,最后經(jīng)過調(diào)試已經(jīng)可以正確地完成詞法階段的任務(wù)了。這只是詞法分析的原始代碼,在之后還進(jìn)行了兩次徹底的改動。雖然之前寫的詞法分析的代碼已經(jīng)完成了詞法分析的需求,也是根據(jù)DFA的原理編寫的,但是在代碼結(jié)構(gòu)上卻難以體現(xiàn),在對書上的根據(jù)已知DFA寫代碼的例子進(jìn)行了詳細(xì)的研究之后,發(fā)現(xiàn)自己的代碼并沒有像書上那樣完全按照所依據(jù)的DFA各狀態(tài)轉(zhuǎn)移的關(guān)系進(jìn)行編寫,所以對代碼進(jìn)行了重寫,像書上一樣嚴(yán)格按照狀態(tài)之間轉(zhuǎn)移的方式進(jìn)行編寫,將狀態(tài)劃分成11個狀態(tài),狀態(tài)分別按1~11進(jìn)行標(biāo)注,程序也按照DFA來編寫,也實(shí)現(xiàn)了詞法分析的功能。再后來寫報(bào)告的時候,發(fā)現(xiàn)分析出Token的那個DFA并不是最簡的,有很多多余的狀態(tài),完全可以用一個flag標(biāo)志來標(biāo)識,從而簡化代碼結(jié)構(gòu),于是又重寫了一次詞法分析函數(shù)scan()的代碼,將狀態(tài)縮減為5個,且不再用15來表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時為了簡化代碼將輸出Token到文件的部分從scan()中剝離開來,而在Lexical類中加了一個printToken()的函數(shù),使scan()函數(shù)邏輯更加清晰,使讀者能夠容易地將代碼與DFA進(jìn)行查看比照。在寫語法分析的時候,已經(jīng)對編譯器的語法分析的內(nèi)容有了一定的了解,所以直接進(jìn)行了理論的學(xué)習(xí)。首先自己對遞歸向下分析法進(jìn)行了學(xué)習(xí),將書上的幾個遞歸向下分析的偽代碼看過之后,自己對遞歸向下的分析方法的原理有了初步的認(rèn)識,大概知道了根據(jù)文法怎么分析,但是對于如何編寫代碼卻還在此處鍵入]是難以下手,于是就對照TINY語言的文法看了幾遍書后面的TINY語言的遞歸向下分析的語法分析程序,這樣就基本知道了C語言的語法分析程序怎么寫。由于C語言給出的文法有左遞歸存在,于是自己將存在左遞歸的文法改寫成EBNF的形式,并據(jù)此進(jìn)行代碼編寫。由于在編寫代碼的過程中需要確定分析是否正確或選擇多個文法中的某一個文法進(jìn)行分析,有時必須探測需要的或下一個Token的類型,在這種情況下需要求First集合,在推導(dǎo)中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據(jù)求出的First集合和Follow集合進(jìn)行判斷,以確定程序的走向。在編寫過程中,還有一類問題,就是存在公共左因子,如文法expression→ var = expression | simpleexpression,左因子為ID,在分析過程中,由于已經(jīng)取出了一個ID的Token,且生成了一個IdK的節(jié)點(diǎn),但是在當(dāng)前狀態(tài)無法確定是哪一個推導(dǎo),然而IdK節(jié)點(diǎn)已經(jīng)生成,又無法回退,并且是使用自頂向下的分析方法,已經(jīng)生成的IdK在程序上方無法使用,自己通過查閱資料等途徑的學(xué)習(xí)確定了在這種情形下的處理方式:將已經(jīng)生成的IdK節(jié)點(diǎn)傳到下方的處理程序,所以TreeNode * simple_expression(TreeNode * k)、TreeNode * additive_expression(TreeNode * k)等函數(shù)都被設(shè)計(jì)成有節(jié)點(diǎn)類型參數(shù)的函數(shù),目的就是將已經(jīng)生成的節(jié)點(diǎn)傳到下面的分析函數(shù)中去。通過這次的編譯原理課程的學(xué)習(xí)和實(shí)踐,自己獲益良多。首先最基本的成果是完成了課程設(shè)計(jì)的任務(wù),實(shí)現(xiàn)了編譯器的詞法分析和語法分析階段的功能,詞法分析主要能過濾注釋、分析出語法分析階段需要的Token并滿足語法階段的所有要求,能夠判別詞法分析階段是否出錯和出錯類型和位置。語法分析主要能根據(jù)遞歸向下的分析思想和C文法對詞法分析獲取的Token進(jìn)行語法分析,能夠構(gòu)造出語法樹,能夠判別語法分析過程中是否出錯以及出錯位置和錯誤類型。由于在編寫程序過程中,涉及到了正則表達(dá)式、DFA、提取公共左因子、消除左遞歸、EBNF、求First集合和Follow集合、遞歸向下分析方法以及編程語言方面的知識,所以,通過本次的課程設(shè)計(jì)的實(shí)踐,使得自己對編譯原理這門課的許多知識點(diǎn)有了更加深刻和具體的理解,而不再只限制于做題。此外,對以前那些已掌握的知識有了溫習(xí)和動手鍛煉的機(jī)會。如:以前在編譯原理課上雖然知道First集合和Follow集合怎么求的,卻不知道First集合和Follow集合到底是干什么的,通過編寫程序自己明白了他們的實(shí)際作用,使得自己不僅知其然還知其所以然,從而使得自己加深了對知識點(diǎn)的理解和掌握。由于以前編寫代碼都是使用JAVA語言,所以C/C++很多內(nèi)容都忘記了,通過本次的實(shí)踐,自己又重新拾起了以前的知識。此外,由于在做報(bào)告的時候,需要描繪DFA和程序流程圖,使得自己初步掌握了使用visio和word畫圖的能力。此外,對于文檔的編寫和美化自己也獲得了許多有用的經(jīng)驗(yàn)。[第四篇:編譯原理課程設(shè)計(jì)設(shè)計(jì)任務(wù)書編譯原理課程設(shè)計(jì)任務(wù)書目的學(xué)生在學(xué)習(xí)《程序設(shè)計(jì)語言編譯原理》課程過程中,結(jié)合各章節(jié)的構(gòu)造編譯程序的基本理論,總共用10個課時完成課程設(shè)計(jì)。在基本實(shí)驗(yàn)完成的基礎(chǔ)上,逐步完成課程設(shè)計(jì)。要求用C或C++語言描述及上機(jī)調(diào)試,實(shí)現(xiàn)一個小編譯器(詞法分析,語法分析,中間代碼產(chǎn)生,優(yōu)化,目標(biāo)代碼生成等重要子程序,其中詞法分析、語法分析及語義分析功能必須完成),使學(xué)生將理論與實(shí)際應(yīng)用結(jié)合起來,受到軟件設(shè)計(jì)等開發(fā)過程的全面訓(xùn)練,從而提高學(xué)生軟件開發(fā)的能力。課程設(shè)計(jì)的任務(wù)(1)設(shè)計(jì)符號表確定符號表的組織方式,一般應(yīng)包括名字欄和信息欄,其中名字欄作為關(guān)鍵字。要考慮能夠存儲有關(guān)名字的信息,并可以高效地完成如下操作::根據(jù)給定的名字,在符號表中查找其信息。如果該名字在符號表中不存在,則將其加入到符號表中,否則返回指向該名字的指針;:從符號表中刪除給定名字的表項(xiàng)。(2)設(shè)計(jì)詞法分析器設(shè)計(jì)各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計(jì)種別碼。將詞法分析器設(shè)計(jì)成供語法分析器調(diào)用的子程序。功能包括:。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設(shè)計(jì)一個供詞法分析調(diào)用的預(yù)處理子程序;;;(種別碼,屬性值)。(3)語法分析與中間代碼產(chǎn)生器要求用預(yù)測分析法、遞歸下降分析法、算符優(yōu)先分析法、SLR分析法(幾種方法任選),實(shí)現(xiàn)對表達(dá)式、各種說明語句、控制語句進(jìn)行語法分析。若語法正確,則用語法制導(dǎo)翻譯法進(jìn)行語義翻譯:對說明語句,要求將說明的各符號記錄到相應(yīng)符號表中;對可執(zhí)行語句,應(yīng)產(chǎn)生出四元式中間代碼并填寫到三地址碼表中;若語法錯誤,要求指出出錯性質(zhì)和出錯位置(行號)。出錯處理應(yīng)設(shè)計(jì)成一個出錯處理子程序。(4)優(yōu)化器:設(shè)計(jì)出劃分基本塊的算法,在每一個基本塊中實(shí)現(xiàn):合并已知量、刪除多余運(yùn)算和刪除無用賦值三種局部優(yōu)化。設(shè)計(jì)構(gòu)造基本塊的DAG圖的算法,以及將DAG圖還原實(shí)現(xiàn)基本塊的優(yōu)化的算法。:只做一重循環(huán)優(yōu)化,完成代碼外提,強(qiáng)度削弱和刪除歸納變量等三種優(yōu)化。要求實(shí)現(xiàn)while循環(huán)和for循環(huán)語句的優(yōu)化。(5)目標(biāo)代碼生成器能完成指定寄存器個數(shù)的情況下將一中間代碼程序段翻譯成匯編語言目標(biāo)代碼(匯編指令應(yīng)包括加、減、乘、除),要求指令條數(shù)最少的情況下,盡量使用寄存器,盡量少訪問內(nèi)存,這樣才能做到運(yùn)行效率高。樣本語言樣本語言為C語言(見附錄),其中基本的語句要求必須實(shí)現(xiàn),其余部分可根據(jù)自己的實(shí)際情況選擇實(shí)現(xiàn)。要求各函數(shù)和過程應(yīng)有框圖描述,有功能說明,有入口和出口參數(shù)說明。參考資料《程序設(shè)計(jì)語言編譯原理》,陳火旺編著,國防工業(yè)出版社《編譯原理》,呂映芝、張素琴、蔣維杜編著,清華大學(xué)出版社《編譯原理》,Alfred ,李建中譯,機(jī)械工業(yè)出版社考察方式最終完成一個完整的編譯程序。要求輸入一小段完整的C語言源程序,輸出各編譯階段的運(yùn)行結(jié)果。在課程設(shè)計(jì)結(jié)束時上機(jī)運(yùn)行,展示運(yùn)行效果。作業(yè)提交最晚在期末(第17周課程結(jié)束時)提交紙質(zhì)作業(yè)及可運(yùn)行程序,格式參考學(xué)院的規(guī)定課程設(shè)計(jì)任務(wù)書模板。第五篇:編譯原理課程設(shè)計(jì)心得體會經(jīng)過一個星期的編譯原理課程設(shè)計(jì),本人在劉貞老師的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過該課程設(shè)計(jì),收獲頗多。一、對實(shí)驗(yàn)原理有更深的理解通過該課程設(shè)計(jì),掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對課本上的知識有了更深的理解,課本上的知識師機(jī)械的,表面的。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深奧的書本知識變的更為簡單,對實(shí)驗(yàn)原理有更深的理解。二、對該理論在實(shí)踐中的應(yīng)用有深刻的理解通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對該理論在實(shí)踐中的應(yīng)用有深刻的理解。三、通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識變得生動有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識強(qiáng)化,能夠把課堂上學(xué)的知識通過自己設(shè)計(jì)的程序表示出來,加深了對理論知識的理解。以前對與計(jì)算機(jī)操copyright作系統(tǒng)的認(rèn)識是模糊的,概念上的,現(xiàn)在通過自己動手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識了操作系統(tǒng)是如何處理命令的,如何協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個部件運(yùn)行,對計(jì)算機(jī)編譯原理的認(rèn)識更加深刻。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時應(yīng)該仔細(xì),在程序調(diào)試時,注意指針,將不必要的命令去除。在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動手能力和程序開發(fā)能力的目的。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1