欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇

      時(shí)間:2019-05-12 13:49:04下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫小編為你整理了多篇相關(guān)的《2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇》。

      第一篇:2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇

      2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇

      經(jīng)過一個(gè)星期的編譯原理課程設(shè)計(jì),本人在劉貞老師的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過該課程設(shè)計(jì),收獲頗多。

      一、對(duì)實(shí)驗(yàn)原理有更深的理解

      通過該課程設(shè)計(jì),掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對(duì)課本上的知識(shí)有了更深的理解,課本上的知識(shí)師機(jī)械的,表面的找范文就來。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。

      二、對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解

      通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解。

      三、激發(fā)了學(xué)習(xí)的積極性

      通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來,加深了對(duì)理論知識(shí)的理解。以前對(duì)與計(jì)算機(jī)操

      作系統(tǒng)的認(rèn)識(shí)是模糊的,概念上的,現(xiàn)在通過自己動(dòng)手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識(shí)了操作系統(tǒng)是如何處理命令的,如何協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個(gè)部件運(yùn)行,對(duì)計(jì)算機(jī)編譯原理的認(rèn)識(shí)更加深刻。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì),在程序調(diào)試時(shí),注意指針,將不必要的命令去除。

      在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的目的。

      四、理解了該知識(shí)點(diǎn)以及學(xué)科之間的融合滲透

      本次課程設(shè)計(jì)程序部分是用c語言編寫的,把《計(jì)算機(jī)操作系統(tǒng)》,《編譯原理》,《算法分析與設(shè)計(jì)》《c語言》四門學(xué)科聯(lián)系起來,把各個(gè)學(xué)科之間的知識(shí)融合起來,把各門課程的知識(shí)聯(lián)系起來,對(duì)計(jì)算機(jī)整體的認(rèn)識(shí)更加深刻。使我加深了對(duì)《計(jì)算機(jī)操作系統(tǒng)》,《編譯原理》,《算法分析與設(shè)計(jì)》《c語言》四門課程的認(rèn)識(shí)。2篇編譯原理的編譯過程一般包括:詞法分析、語法分析、語義分析與中間代碼產(chǎn)生、優(yōu)化、目標(biāo)代碼生成五個(gè)階段。通過本次設(shè)計(jì),使我對(duì)編譯原理有了進(jìn)一步的了解,更加鞏固了所學(xué)習(xí)的知識(shí)。我所選擇的題目是《LL(1)文法的編譯器自動(dòng)生成器的生成與實(shí)現(xiàn)》,這是在語法分析階段。語法分析的主要任務(wù)就是:在詞法分析的基礎(chǔ)上,根據(jù)語言的語法規(guī)則,把單詞符號(hào)串分解成各類語法單位。通過語法分析,確定整個(gè)輸入串是否構(gòu)成語法上正確的“程序。”對(duì)此,我查找資料設(shè)計(jì)出一個(gè)簡(jiǎn)單的程序。輸入字符串,進(jìn)行簡(jiǎn)單的分析。編譯原理是一門比較抽象的課程,也比較難以學(xué)得透。從一開始孫老師就對(duì)我們說,這個(gè)課程,如果你不認(rèn)真去學(xué),你就學(xué)不懂;如果你想不聽課,然后自學(xué)的話,你肯定會(huì)花比人家多很多的時(shí)間。確實(shí)是這樣,現(xiàn)在課程找范文就來WWW.downhot.com已經(jīng)結(jié)束了,我慶幸當(dāng)初聽老師的話,比較認(rèn)真地去聽課。即使如此,還是有很多東西很模糊的。但至少對(duì)編譯這個(gè)概念有一定的了解。如果要成為一名優(yōu)秀的軟件開發(fā)工作者,則這門課程必不可少。它是軟件工程的基礎(chǔ),學(xué)好它,對(duì)軟件的設(shè)計(jì)有很大的幫助。通過本次的設(shè)計(jì),我更加體會(huì)到這一點(diǎn)。剛開始設(shè)計(jì)的時(shí)候,我根本就找不著路。平時(shí)的實(shí)驗(yàn)老師都有給出部分代碼或者代碼,而這次,卻是要自己通過學(xué)習(xí)來完成。我們學(xué)過C和C++程序設(shè)計(jì)語言,理所當(dāng)然會(huì)想到使用這兩種語言之一來實(shí)現(xiàn)。我選擇了C++,因?yàn)檫@個(gè)學(xué)期也在學(xué)習(xí),剛好可以通過課程設(shè)計(jì)再次鞏固。在網(wǎng)上找了一些資料,也參考過別人所寫的代碼,慢慢開始寫......剛好期末考試,也就寫寫停停,拖了比較長(zhǎng)時(shí)間。無論如何,當(dāng)初只是在想,只要我有得交就是了。后來寫著寫著,來感覺了,就覺得,其實(shí)學(xué)習(xí)也是一件挺有趣的事。特別是當(dāng)自己的代碼能運(yùn)行的時(shí)候,那種心情真的特興奮。盡管代碼并不完善,并且會(huì)有錯(cuò)誤,不過,今后我會(huì)再次努力學(xué)習(xí),然后把它做得更好。

      第二篇:編譯原理課程設(shè)計(jì)心得體會(huì)

      經(jīng)過一個(gè)星期的編譯原理課程設(shè)計(jì),本人在劉貞老師的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過該課程設(shè)計(jì),收獲頗多。

      一、對(duì)實(shí)驗(yàn)原理有更深的理解

      通過該課程設(shè)計(jì),掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對(duì)課本上的知識(shí)有了更深的理解,課本上的知識(shí)師機(jī)械的,表面的。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。

      二、對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解

      通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解。

      三、激發(fā)了學(xué)習(xí)的積極性本文轉(zhuǎn)載在004km.cn代寫之家

      通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來,加深了對(duì)理論知識(shí)的理解。以前對(duì)與計(jì)算機(jī)操

      copyright

      www.chazidian

      作系統(tǒng)的認(rèn)識(shí)是模糊的,概念上的,現(xiàn)在通過自己動(dòng)手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識(shí)了操作系統(tǒng)是如何處理命令的,如何協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個(gè)部件運(yùn)行,對(duì)計(jì)算機(jī)編譯原理的認(rèn)識(shí)更加深刻。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì),在程序調(diào)試時(shí),注意指針,將不必要的命令去除。

      在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的目的。

      第三篇:編譯原理課程設(shè)計(jì)心得體會(huì)

      編譯原理課程設(shè)計(jì)心得體會(huì)

      經(jīng)過一個(gè)星期的編譯原理課程設(shè)計(jì),本人在劉貞老師的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過該課程設(shè)計(jì),收獲頗多。

      一、對(duì)實(shí)驗(yàn)原理有更深的理解

      通過該課程設(shè)計(jì),掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對(duì)課本上的知識(shí)有了更深的理解,課本上的知識(shí)師機(jī)械的,表面的。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深?yuàn)W的書本知識(shí)變的更為簡(jiǎn)單,對(duì)實(shí)驗(yàn)原理有更深的理解。

      二、對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解

      通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解。

      三、激發(fā)了學(xué)習(xí)的積極性

      通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來,加深了對(duì)理論知識(shí)的理解。以前對(duì)與計(jì)算機(jī)操

      作系統(tǒng)的認(rèn)識(shí)是模糊的,概念上的,現(xiàn)在通過自己動(dòng)手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識(shí)了操作系統(tǒng)是如何處理命令的,如何協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個(gè)部件運(yùn)行,對(duì)計(jì)算機(jī)編譯原理的認(rèn)識(shí)更加深刻。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)試時(shí)應(yīng)該仔細(xì),在程序調(diào)試時(shí),注意指針,將不必要的命令去除。

      在這次課程設(shè)計(jì)中,我就是按照實(shí)驗(yàn)指導(dǎo)的思想來完成。加深了理解文件系統(tǒng)的內(nèi)部功能及內(nèi)部實(shí)現(xiàn),培養(yǎng)實(shí)踐動(dòng)手能力和程序開發(fā)能力的目的。

      四、理解了該知識(shí)點(diǎn)以及學(xué)科之間的融合滲透

      本次課程設(shè)計(jì)程序部分是用c語言編寫的,把《計(jì)算機(jī)操作系統(tǒng)》,《編譯原理》,《算法分析與設(shè)計(jì)》《c語言》四門學(xué)科聯(lián)系起來,把各個(gè)學(xué)科之間的知識(shí)融合起來,把各門課程的知識(shí)聯(lián)系起來,對(duì)計(jì)算機(jī)整體的認(rèn)識(shí)更加深刻。使我加深了對(duì)《計(jì)算機(jī)操作系統(tǒng)》,《編譯原理》,《算法分析與設(shè)計(jì)》《c語言》四門課程的認(rèn)識(shí)。

      第四篇:編譯原理課程設(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

      閆智宣

      分工:

      語法分析,四元式生成,目標(biāo)代碼優(yōu)化及生成 組員1學(xué)號(hào)及姓名:20123977

      廖峭 分工:

      詞法分析,錯(cuò)誤處理 組員2學(xué)號(hào)及姓名:20123959

      郭天龍

      分工:

      符號(hào)表生成,語義動(dòng)作插入,操作界面[在此處鍵入]

      摘要

      編譯原理課程設(shè)計(jì)是通過C語言編譯器相關(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序列。將詞法分析器設(shè)計(jì)成供語法分析器調(diào)用的子程序。詞法分析器具備預(yù)處理功能。將不翻譯的注釋等符號(hào)先濾掉,只保留要翻譯的符號(hào)串,即要求設(shè)計(jì)一個(gè)供詞法分析調(diào)用的預(yù)處理子程序;第二部分,語法分析,用遞歸下降法,實(shí)現(xiàn)對(duì)表達(dá)式、各種說明語句、控制語句進(jìn)行語法分析。若語法正確,則用語法制導(dǎo)翻譯法進(jìn)行語義翻譯;生成并打印出語法樹;若語法錯(cuò)誤,要求指出出錯(cuò)性質(zhì)和出錯(cuò)位置(行號(hào))。

      我們還做了附加功能,即編譯后端,有中間代碼優(yōu)化,生成目標(biāo)代碼匯編語言。通過此次課程設(shè)計(jì),提高了我們的獨(dú)立分析問題、解決問題的能力,以及系統(tǒng)軟件設(shè)計(jì)的能力; 提高程序設(shè)計(jì)能力、程序調(diào)試能力,團(tuán)結(jié)協(xié)作能力

      關(guān)鍵詞:詞法分析,語法分析,四元式生成,錯(cuò)誤處理,符號(hào)表生成,語義動(dòng)作插入,中間代碼優(yōu)化,生成目標(biāo)代碼 [在此處鍵入]

      目錄

      摘要

      1.概述

      2.課程設(shè)計(jì)任務(wù)及要求

      2.1 設(shè)計(jì)任務(wù)

      2.2 設(shè)計(jì)要求

      3.算法及數(shù)據(jù)結(jié)構(gòu)

      3.1算法的總體思想(流程)

      3.2 詞法分析模塊

      3.2.1 功能

      3.2.2 數(shù)據(jù)結(jié)構(gòu)

      3.2.3 算法

      3.3 語法分析模塊

      3.3.1功能

      3.3.2 數(shù)據(jù)結(jié)構(gòu)

      3.3.3算法

      3.4 符號(hào)表模塊

      3.4.1功能

      3.4.2 數(shù)據(jù)結(jié)構(gòu)

      3.4.3算法

      3.5 四元式模塊

      3.5.1功能

      [在此處鍵入]

      3.5.2 數(shù)據(jù)結(jié)構(gòu)

      3.5.3算法

      3.6 語義動(dòng)作分析模塊

      3.6.1功能 3.6.2 數(shù)據(jù)結(jié)構(gòu)

      3.6.3算法

      3.7 錯(cuò)誤處理模塊

      3.7.1功能

      3.7.2 數(shù)據(jù)結(jié)構(gòu)

      3.7.3算法

      3.8 目標(biāo)代碼模塊

      3.8.1功能

      3.8.2 數(shù)據(jù)結(jié)構(gòu)

      3.8.3算法

      4.程序設(shè)計(jì)與實(shí)現(xiàn)

      4.1 程序流程圖

      4.2 程序說明

      4.3 實(shí)驗(yàn)結(jié)果

      5.結(jié)論 6.參考文獻(xiàn)。7.收獲、體會(huì)和建議。

      [在此處鍵入]

      1.概述

      編譯器是將C語言翻譯為匯編語言代碼的計(jì)算機(jī)程序。編譯器將源程序(source language)編寫的程序作為輸入,翻譯產(chǎn)生目標(biāo)語言(target language)機(jī)器代碼的等價(jià)程序。通常地,源程序?yàn)楦呒?jí)語言(high-level language),C語言程序,而目標(biāo)則是 機(jī)器語言的目標(biāo)代碼(object code),也就是可以在計(jì)算機(jī)硬件中運(yùn)行的機(jī)器代碼軟件程序。這一過程可以表示為:

      源程序→編譯器 →目標(biāo)機(jī)器代碼程序

      2.課程設(shè)計(jì)任務(wù)及要求

      2.1設(shè)計(jì)任務(wù)

      學(xué)生在學(xué)習(xí)《編譯原理》課程過程中,結(jié)合各章節(jié)的構(gòu)造編譯程序的基本理論,要求用C#語言描述及上機(jī)調(diào)試,實(shí)現(xiàn)一個(gè) C編譯程序(包括詞法分析,語法分析等重要子程序),使學(xué)生將理論與實(shí)際應(yīng)用結(jié)合起來,受到軟件設(shè)計(jì)等開發(fā)過程的全面訓(xùn)練,從而提高學(xué)生軟件開發(fā)的能力。

      2.2設(shè)計(jì)要求 要求:

      (1)設(shè)計(jì)詞法分析器

      設(shè)計(jì)各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設(shè)計(jì)種別碼。將詞法分析器設(shè)計(jì)成供語法分析器調(diào)用的子程序。功能包括:

      a.具備預(yù)處理功能。將不翻譯的注釋等符號(hào)先濾掉,只保留要翻譯的符號(hào)串,即要求設(shè)計(jì)一個(gè)供詞法分析調(diào)用的預(yù)處理子程序;

      b.能夠拼出語言中的各個(gè)單詞; [在此處鍵入]

      c.返回(種別碼,屬性值,行號(hào))。

      (2)語法分析

      要求用學(xué)習(xí)過的自底向上或自頂向下的分析方法等,實(shí)現(xiàn)對(duì)表達(dá)式、各種說明語句、控制語句進(jìn)行語法分析。若語法正確,則用語法制導(dǎo)翻譯法進(jìn)行語義翻譯;生成并打印出語法樹;若語法錯(cuò)誤,要求指出出錯(cuò)性質(zhì)和出錯(cuò)位置(行號(hào))。

      3.算法及數(shù)據(jù)結(jié)構(gòu)

      3.1算法的總體思想(流程)

      本節(jié)主要分析程序的代碼結(jié)構(gòu)和代碼工程文件的劃分。(程序由幾個(gè)類組成: Token類和Variable類SymbolTable類ObjectCode類Lexical類Grammar類Four_Yuan類Action類ErrorItem類,分別為詞法分析和語法分析類。工程分為幾個(gè)文件:Form1.cs,Token.cs,Variable.cs,SymbolTable.cs,ObjectCode.cs,Lexical.cs,Grammar.cs,Four_Yuan,cs,Action.cs,ErrorItem.cs分別對(duì)應(yīng)Token類和Variable類SymbolTable類ObjectCode類Lexical類Grammar類Four_Yuan類Action類ErrorItem類的聲明和實(shí)現(xiàn)文件)。本程序采用C#語言以面向?qū)ο蟮乃枷刖帉懀绦蚍譃閹撞糠郑涸~法分析(Lexical),語法分析(Grammer),目標(biāo)代碼生成(ObjectCode)。Lexical類主要的工作是詞法分析獲取Token。Grammer類的主要工作是根據(jù)Lexical類詞法分析之后的Token進(jìn)行語法分析,生成語法樹,最后并輸出語法樹。在處理過程中,Token類的對(duì)象作為L(zhǎng)exical類的一個(gè)成員變量,配合Grammer類進(jìn)行語法分析。

      工程文件總體上是按照九個(gè)類的格局分為十個(gè)文件,分別是九個(gè)類的聲明文件和實(shí)現(xiàn)文件。十個(gè)文件為Form1.cs,Token.cs,Variable.cs,SymbolTable.cs,ObjectCode.cs,Lexical.cs,Grammar.cs,Four_Yuan,cs,Action.cs,ErrorItem.cs,他們分別是Lexical類聲明文件、Lexical類實(shí)現(xiàn)文件、Grammer類聲明文件、Grammer類實(shí)現(xiàn)文件。[在此處鍵入]

      程序流程

      在程序中,Lexical類的對(duì)象(Token)作為Grammer類中的一個(gè)成員變量,配合Grammer類進(jìn)行語法分析。它們的關(guān)系是這樣的:Grammer類的一個(gè)成員變量temp首先對(duì)源程序刪除注釋,然后進(jìn)行詞法分析獲取所有Token,并將獲取的Token存儲(chǔ)在Token對(duì)象的tokenList(List類型)中。然后Grammer類的語法分析程序就根據(jù)tokenList中的Token進(jìn)行語法分析,生成語法樹,最后打印語法樹。同時(shí),這也是程序的流程。[在此處鍵入]

      3.2 詞法分析模塊 3.2.1功能

      Lexical類主要的工作是詞法分析獲取Token序列。

      3.2.2數(shù)據(jù)結(jié)構(gòu)

      詞法分析階段的代碼被封裝成一個(gè)類——Lexical,Token中主要是Lexical類的聲明代碼,Lexical.cs中主要是Lexical類的實(shí)現(xiàn)代碼。Lexical類對(duì)外提供的函數(shù)主要有:

      static public int RecogId(string str, int i),static public int RecogDig(string str,int i),static public int RecogOperator(string str, int i),static public int RecogBound(string str, int i),以上幾個(gè)函數(shù)構(gòu)成了詞法分析的骨架,在Lexical類中還有其他成員變量和函數(shù),主要作為這三個(gè)函數(shù)處理過程的中間步驟,為這三個(gè)函數(shù)服務(wù)。Lexical類的代碼結(jié)構(gòu)和主要的成員變量和函數(shù)及其含義如下圖所示:

      3.2.3算法

      算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),其基本思想是[在此處鍵入]

      根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號(hào)。

      主程序示意圖:

      主程序示意圖如圖3-1所示。

      ⑴ 關(guān)鍵字表的初值。

      關(guān)鍵字作為特殊標(biāo)識(shí)符處理,把它們預(yù)先安排在一張表格中(稱為關(guān)鍵字表),當(dāng)掃描程序識(shí)別出標(biāo)識(shí)符時(shí),查關(guān)鍵字表。如能查到匹配的單詞,則該單詞為關(guān)鍵字,否則為一般標(biāo)識(shí)符。

      (2)程序中需要用到的主要變量為type和number 掃描子程序的算法思想:

      首先設(shè)置3個(gè)變量: [在此處鍵入]

      ①token用來存放構(gòu)成單詞符號(hào)的字符串; ②number用來整型單詞;

      ③type用來存放單詞符號(hào)的種別碼。

      Token定義

      Token定義:

      Token類型(TokenType):

      3.3 語法分析模塊

      3.3.1功能

      語法分析是編譯過程的一個(gè)邏輯階段。語法分析的功能是在詞法分析的基礎(chǔ)上將單詞序列組合成各類語法短語,如“程序”,“語句”,“表達(dá)式”等等.語法分析程序判斷源程序在結(jié)構(gòu)上是否正確.源程序的結(jié)構(gòu)由上下文無關(guān)文法描述.3.3.2 數(shù)據(jù)結(jié)構(gòu)

      下圖為實(shí)現(xiàn)語法分析的類Grammar,屬性與方法的作用都已說明 在此處鍵入]

      3.3.3算法

      1.文法

      下面終結(jié)符與非終結(jié)符意義

      B程序開始

      Z 數(shù)據(jù)類型,如int,char,float等

      V 標(biāo)識(shí)符

      S 語句

      P 語句塊

      E 加減算術(shù)表達(dá)式

      D 逗號(hào)表達(dá)式

      T 乘除算術(shù)表達(dá)式

      C 關(guān)系表達(dá)式

      L 邏輯表達(dá)式

      Q 標(biāo)識(shí)符或圓括號(hào)

      e 表示空

      i 表示標(biāo)識(shí)符 a)函數(shù)文法

      B----ZV()S

      [

      [在此處鍵入]

      b)語句塊文法

      P----SP|e

      S----{P} c)語句文法

      表達(dá)式語句文法

      S----V=E

      goto語句文法

      S----i:S

      S----goto i

      if語句文法

      S----if(E)S[else S]

      while語句文法

      S----while(E)S

      聲明語句文法

      S----ZVD

      D----,VD|=ED|e d)表達(dá)式文法

      E----T|E+T|E-T

      T----F|T*F|T/F

      C----C|CL|C==C|C<= L|C>=L

      L----Q|L&&Q|L||Q

      Q----i|(E)|!Q

      2.遞歸下降程序流程圖

      對(duì)應(yīng)于每個(gè)文法編寫如下遞歸下降子程序

      主程序(B)[在此處鍵入] [在此處鍵入]

      3.4 符號(hào)表模塊

      3.4.1功能

      進(jìn)行符號(hào)表的儲(chǔ)存,添加,更新,查找,保存標(biāo)識(shí)符活躍信息以及輸出。3.4.2 數(shù)據(jù)結(jié)構(gòu)

      在此處鍵入]

      3.4.3算法

      3.5 四元式模塊

      3.5.1功能

      四元式為中間代碼,編譯程序進(jìn)行完語義分析后,先生成中間代碼作為過渡,此時(shí)中間代碼與目標(biāo)代碼已經(jīng)比較相似

      3.5.2 數(shù)據(jù)結(jié)構(gòu)

      [ 在此處鍵入]

      3.5.3算法

      3.6語義動(dòng)作分析模塊

      3.6.1功能

      在語法分析中嵌入相應(yīng)的語義動(dòng)作,生成四元式 3.6.2 數(shù)據(jù)結(jié)構(gòu)

      [

      [在此處鍵入]

      3.6.3算法 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,_,_,_)

      3.7 錯(cuò)誤處理模塊

      3.7.1功能 保存運(yùn)行時(shí)發(fā)現(xiàn)的錯(cuò)誤,儲(chǔ)存行號(hào)已經(jīng)詳細(xì)信息并輸出。

      3.7.2 數(shù)據(jù)結(jié)構(gòu)

      3.7.3算法 [在此處鍵入]

      public static void AddErrorMessage(int lineno,string content)函數(shù)用作在發(fā)現(xiàn)錯(cuò)誤時(shí)保存錯(cuò)誤信息以及行號(hào)。

      public static string PrintErrorList()把所有發(fā)現(xiàn)的錯(cuò)誤格式化后統(tǒng)一輸出。

      錯(cuò)誤信息在語法分析,語義分析,符號(hào)表檢錯(cuò)中添加。3.8 目標(biāo)代碼模塊

      3.8.1功能

      目標(biāo)代碼生成把優(yōu)化后的中間代碼變換成目標(biāo)代碼,此處的目標(biāo)代碼為匯編代碼,采用單寄存器生成目標(biāo)代碼 3.8.2 數(shù)據(jù)結(jié)構(gòu)[在此處鍵入]

      3.8.3算法

      對(duì)于一個(gè)基本塊有如下流程圖

      W:操作符,B:第一操作數(shù),C:第二操作數(shù),R:寄存器

      5.結(jié)論

      網(wǎng)上找一段話抄上 [在此處鍵入]

      6.測(cè)試

      測(cè)試打開文件

      測(cè)試保存文件

      如果沒打開文件,直接敲代碼,點(diǎn)保存時(shí)會(huì)彈出另存為窗口[在此處鍵入]

      測(cè)試錯(cuò)誤檢測(cè),程序缺少main函數(shù)的類型,錯(cuò)誤列表中顯示第一行函數(shù)缺少錯(cuò)誤類型。

      測(cè)試錯(cuò)誤檢測(cè),程序缺少分號(hào),錯(cuò)誤列表中顯示該行缺少語句結(jié)束標(biāo)志';' 單擊錯(cuò)誤列表,會(huì)自動(dòng)選定錯(cuò)誤行

      編譯成功,生成并顯示token串、符號(hào)表、四元式與目標(biāo)代碼 [在此處鍵入]

      測(cè)試if與while語句,而且while嵌套在if當(dāng)中

      測(cè)試goto語句,結(jié)果正確。[在此處鍵入]

      測(cè)試優(yōu)化,輸入課件中的代碼,結(jié)果與課件一樣

      6.參考文獻(xiàn)。

      1、陳火旺.《程序設(shè)計(jì)語言編譯原理》(第3版).北京:國(guó)防工業(yè)出版社.2000.2、美 Alfred V.Aho Ravi Sethi Jeffrey D.Ullman著.李建中,姜守旭譯.《編譯原理》.24 [在此處鍵入]

      北京:機(jī)械工業(yè)出版社.2003.3、美 Kenneth C.Louden著.馮博琴等譯.《編譯原理及實(shí)踐》.北京:機(jī)械工業(yè)出版社.2002.4、金成植著.《編譯程序構(gòu)造原理和實(shí)現(xiàn)技術(shù)》.北京:高等教育出版社.2002.7.收獲、體會(huì)和建議。

      直接拷貝好歹也檢查一下錯(cuò)誤

      對(duì)于編譯原理的這次課程設(shè)計(jì),自己經(jīng)歷了從剛開始的不懂?明白任務(wù)的要求和內(nèi)容?理論知識(shí)的了解?開始著手寫代碼?完成基本功能?根據(jù)DFA及自頂向下等理論修改完善代碼等這些過程。

      自己著手寫詞法分析的時(shí)候還不清楚詞法分析的任務(wù)內(nèi)容,還不知道詞法分析的結(jié)果是什么,詞法分析出錯(cuò)的情況和類型有哪些,也總是將詞法分析和語法分析混在一起,不明白哪些錯(cuò)誤在詞法分析中報(bào),哪些錯(cuò)誤在語法分析中判斷,后來經(jīng)過查書、網(wǎng)上資料、請(qǐng)教同學(xué)等途徑逐步清晰了詞法分析的工作內(nèi)容是從源代碼文件中獲取出Token,供語法分析使用。在充分了解了語法分析需要哪些信息時(shí),我才真正了解了詞法分析的工作內(nèi)容和目標(biāo),才知道詞法分析需要完成哪些任務(wù)獲取到哪些信息。充分了解了詞法分析的任務(wù)之后,就開始理論知識(shí)的學(xué)習(xí)。經(jīng)過揣摩書上的例子,自己理解和掌握了怎么設(shè)計(jì)過濾注釋和分析程序中Token的DFA,于是開始根據(jù)設(shè)計(jì)好的DFA進(jìn)行編碼,最后經(jīng)過調(diào)試已經(jīng)可以正確地完成詞法階段的任務(wù)了。這只是詞法分析的原始代碼,在之后還進(jìn)行了兩次徹底的改動(dòng)。雖然之前寫的詞法分析的代碼已經(jīng)完成了詞法分析的需求,也是根據(jù)DFA的原理編寫的,但是在代碼結(jié)構(gòu)上卻難以體現(xiàn),在對(duì)書上的根據(jù)已知DFA寫代碼的例子進(jìn)行了詳細(xì)的研究之后,發(fā)現(xiàn)自己的代碼并沒有像書上那樣完全按照所依據(jù)的DFA各狀態(tài)轉(zhuǎn)移的關(guān)系進(jìn)行編寫,所以對(duì)代碼進(jìn)行了重寫,像書上一樣嚴(yán)格按照狀態(tài)之間轉(zhuǎn)移的方式進(jìn)行編寫,將狀態(tài)劃分成11個(gè)狀態(tài),狀態(tài)分別按1~11進(jìn)行標(biāo)注,程序也按照DFA來編寫,也實(shí)現(xiàn)了詞法分析的功能。再后來寫報(bào)告的時(shí)候,發(fā)現(xiàn)分析出Token的那個(gè)DFA并不是最簡(jiǎn)的,有很多多余的狀態(tài),完全可以用一個(gè)flag標(biāo)志來標(biāo)識(shí),從而簡(jiǎn)化代碼結(jié)構(gòu),于是又重寫了一次詞法分析函數(shù)scan()的代碼,將狀態(tài)縮減為5個(gè),且不再用1-5來表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時(shí)為了簡(jiǎn)化代碼將輸出Token到文件的部分從scan()中剝離開來,而在Lexical類中加了一個(gè)printToken()的函數(shù),使scan()函數(shù)邏輯更加清晰,使讀者能夠容易地將代碼與DFA進(jìn)行查看比照。

      在寫語法分析的時(shí)候,已經(jīng)對(duì)編譯器的語法分析的內(nèi)容有了一定的了解,所以直接進(jìn)行了理論的學(xué)習(xí)。首先自己對(duì)遞歸向下分析法進(jìn)行了學(xué)習(xí),將書上的幾個(gè)遞歸向下分析的偽代碼看過之后,自己對(duì)遞歸向下的分析方法的原理有了初步的認(rèn)識(shí),大概知道了根據(jù)文法怎么分析,但是對(duì)于如何編寫代碼卻還在此處鍵入]

      是難以下手,于是就對(duì)照TINY語言的文法看了幾遍書后面的TINY語言的遞歸向下分析的語法分析程序,這樣就基本知道了C-語言的語法分析程序怎么寫。由于C-語言給出的文法有左遞歸存在,于是自己將存在左遞歸的文法改寫成EBNF的形式,并據(jù)此進(jìn)行代碼編寫。由于在編寫代碼的過程中需要確定分析是否正確或選擇多個(gè)文法中的某一個(gè)文法進(jìn)行分析,有時(shí)必須探測(cè)需要的或下一個(gè)Token的類型,在這種情況下需要求First集合,在推導(dǎo)中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據(jù)求出的First集合和Follow集合進(jìn)行判斷,以確定程序的走向。在編寫過程中,還有一類問題,就是存在公共左因子,如文法expression→ var = expression | simple-expression,左因子為ID,在分析過程中,由于已經(jīng)取出了一個(gè)ID的Token,且生成了一個(gè)IdK的節(jié)點(diǎn),但是在當(dāng)前狀態(tài)無法確定是哪一個(gè)推導(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并滿足語法階段的所有要求,能夠判別詞法分析階段是否出錯(cuò)和出錯(cuò)類型和位置。語法分析主要能根據(jù)遞歸向下的分析思想和C-文法對(duì)詞法分析獲取的Token進(jìn)行語法分析,能夠構(gòu)造出語法樹,能夠判別語法分析過程中是否出錯(cuò)以及出錯(cuò)位置和錯(cuò)誤類型。

      由于在編寫程序過程中,涉及到了正則表達(dá)式、DFA、提取公共左因子、消除左遞歸、EBNF、求First集合和Follow集合、遞歸向下分析方法以及編程語言方面的知識(shí),所以,通過本次的課程設(shè)計(jì)的實(shí)踐,使得自己對(duì)編譯原理這門課的許多知識(shí)點(diǎn)有了更加深刻和具體的理解,而不再只限制于做題。此外,對(duì)以前那些已掌握的知識(shí)有了溫習(xí)和動(dòng)手鍛煉的機(jī)會(huì)。如:以前在編譯原理課上雖然知道First集合和Follow集合怎么求的,卻不知道First集合和Follow集合到底是干什么的,通過編寫程序自己明白了他們的實(shí)際作用,使得自己不僅知其然還知其所以然,從而使得自己加深了對(duì)知識(shí)點(diǎn)的理解和掌握。由于以前編寫代碼都是使用JAVA語言,所以C/C++很多內(nèi)容都忘記了,通過本次的實(shí)踐,自己又重新拾起了以前的知識(shí)。此外,由于在做報(bào)告的時(shí)候,需要描繪DFA和程序流程圖,使得自己初步掌握了使用visio和word畫圖的能力。此外,對(duì)于文檔的編寫和美化自己也獲得了許多有用的經(jīng)驗(yàn)。[

      第五篇:編譯原理課程設(shè)計(jì)學(xué)習(xí)心得體會(huì)

      一周的課程設(shè)計(jì)很快過去,總體感覺得做得很不爽。

      因?yàn)榭荚嚨脑?,所有想盡快把這個(gè)課程設(shè)計(jì)做完,所以就直接改了老師的程序,以為這樣會(huì)快一些,事實(shí)證明,確實(shí)如此,但是做起來很不順手,程序員更討厭的是看別人的程序。不知道變量的含義,函數(shù)的作用。還有就是對(duì)vc 不是很熟,不僅開發(fā)環(huán)境不熟,就連c(其實(shí)應(yīng)該說是c)的一些常用函數(shù)都忘得一干凈,就好比字符轉(zhuǎn)化為整型(atoi)和整型轉(zhuǎn)化為字符型(itoa)這兩個(gè)函數(shù),根本不認(rèn)識(shí),還是在google上搜索到的資料。

      c 確實(shí)有很多不完美的地方,我最煩的就是指針,指來指去的很讓人頭疼。還有就有字符串的轉(zhuǎn)換等一些操作,沒有java來得方便。如果自己獨(dú)立編寫代碼的話,我會(huì)首先考慮用java,其次考慮用c#,最后才用c。

      至于用什么asp,jsp來做,我也可以做,這些動(dòng)態(tài)網(wǎng)頁語 言都接觸過,只可惜自己技不如人,不能在兩天的時(shí)間內(nèi),把程序編出來,只能用最快的方法,用現(xiàn)成的改。因考慮到編譯是一門考研科目,所以自己打算在考試結(jié)束以后再完完整整地做一個(gè)。

      總的來說,課程設(shè)計(jì)加深了自己對(duì)編譯這門課的理解,發(fā)現(xiàn)自己還有很多的地方要復(fù)習(xí),甚至還有知識(shí)點(diǎn)的理解偏差。一定在考試把所有的漏動(dòng)填平。

      xiexiebang.com范文網(wǎng)(FANWEN.CHAZIDIAN.COM)

      下載2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇word格式文檔
      下載2016編譯原理課程設(shè)計(jì)心得體會(huì) 2篇.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

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

        武 漢 紡 織 大 學(xué) 編譯原理課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告學(xué)院:數(shù)學(xué)與計(jì)算機(jī) 專業(yè):計(jì)算機(jī) 姓名: 班級(jí): 學(xué)號(hào):1 編譯原理 編譯原理課設(shè)報(bào)告 一、 實(shí)驗(yàn)?zāi)康?加強(qiáng)對(duì)編譯程序的整體認(rèn)識(shí)和了解,鞏......

        編譯原理課程設(shè)計(jì)設(shè)計(jì)任務(wù)書

        編譯原理課程設(shè)計(jì)任務(wù)書 1、目的 學(xué)生在學(xué)習(xí)《程序設(shè)計(jì)語言編譯原理》課程過程中,結(jié)合各章節(jié)的構(gòu)造編譯程序的基本理論,總共用10個(gè)課時(shí)完成課程設(shè)計(jì)。在基本實(shí)驗(yàn)完成的基礎(chǔ)上,......

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

        編譯原理課程設(shè)計(jì)報(bào)告課題名稱:提交文檔學(xué)生姓名:提交文檔學(xué)生學(xué)號(hào):同組 成 員 名 單:無指導(dǎo) 教 師 姓 名: 指導(dǎo)教師評(píng)閱成績(jī):指導(dǎo)教師評(píng)閱意見: 提交報(bào)告時(shí)間:年月日 1. 課程設(shè)計(jì)目......

        編譯原理課程設(shè)計(jì)要求

        題目:書中任選一文法對(duì)它進(jìn)行LR分析和語義分析(語言不限制)文檔不可少的內(nèi)容: ? 實(shí)現(xiàn)原理 ? 程序流程圖 ? 子函數(shù)說明或者類的說明 ? 程序代碼及運(yùn)行結(jié)果 ? 心得體會(huì)文檔不少于12頁......

        99《編譯原理》課程設(shè)計(jì)(最終定稿)

        第 1 頁 共 3 頁《編譯原理》課程設(shè)計(jì) 《編譯原理》課程設(shè)計(jì) 一、 課程設(shè)計(jì)的目的 通過課程設(shè)計(jì),真正掌握設(shè)計(jì)和構(gòu)造編譯程序的基本原理和常用的編譯技術(shù),具備系統(tǒng)軟件調(diào)試能......

        編譯原理課程設(shè)計(jì)教案

        黃岡師范學(xué)院 《編譯原理課程設(shè)計(jì)》教案 (2011·春) 授 課 教 師: 張 瑞 紅 授 課 班 級(jí): 計(jì)科2008級(jí) 授 課 時(shí) 間: 2010-2011 二 課題一 有限自動(dòng)機(jī)的運(yùn)行 一、設(shè)計(jì)題目:有限......

        《編譯原理》課程設(shè)計(jì)要求

        《編譯原理》課程設(shè)計(jì)實(shí)施方案 課程設(shè)計(jì)的具體內(nèi)容以傳至QQ群共享《編譯原理課程設(shè)計(jì)具體內(nèi)容.ppt》中,由于學(xué)校沒有足夠大的機(jī)房供我們課程設(shè)計(jì),所以課程設(shè)計(jì)采取單獨(dú)輔導(dǎo)形......

        編譯原理課程設(shè)計(jì)2011級(jí)

        2011級(jí)《編譯原理課程設(shè)計(jì)》任務(wù)書一、課程設(shè)計(jì)的性質(zhì)和目的 編譯原理課程設(shè)計(jì)是計(jì)算機(jī)專業(yè)課程,通過課程設(shè)計(jì)使學(xué)生進(jìn)一步鞏固課堂所學(xué)知識(shí),全面熟悉、掌握編譯程序編寫的基......