版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、編譯原理心得體會 篇一:編譯原理課程設(shè)計(jì)心得體會 編譯原理課程設(shè)計(jì)心得體會 經(jīng)過一個(gè)星期的編譯原理課程設(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)用有深刻的理解 通過把該
2、算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn), 知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對該理論在 實(shí)踐中的應(yīng)用有深刻的理解。 三、激發(fā)了學(xué)習(xí)的積極性 通過該課程設(shè)計(jì),全面系統(tǒng)的理解了編譯原理程序構(gòu)造 的一般原理和基本實(shí)現(xiàn)方法。把死板的課本知識變得生動有 趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué)過的計(jì)算機(jī)編譯原理的知識 強(qiáng)化,能夠把課堂上學(xué)的知識通過自己設(shè)計(jì)的程序表示出來, 加深了對理論知識的理解。以前對與計(jì)算機(jī)操 作系統(tǒng)的認(rèn)識是模糊的,概念上的,現(xiàn)在通過自己動手 做實(shí)驗(yàn),從實(shí)踐上認(rèn)識了操作系統(tǒng)是如何處理命令的,如何 協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個(gè)部件運(yùn)行,對計(jì)算機(jī)編譯原理的認(rèn)識更 加深刻。課程設(shè)計(jì)中程序比較復(fù)雜,在調(diào)
3、試時(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í)踐動手 能力和程序開發(fā)能力的目的。 四、理解了該知識點(diǎn)以及學(xué)科之間的融合滲透 本次課程設(shè)計(jì)程序部分是用 c 語言編寫的,把計(jì)算機(jī) 操作系統(tǒng),編譯原理 ,算法分析與設(shè)計(jì) c 語言四門 學(xué)科聯(lián)系起來,把各個(gè)學(xué)科之間的知識融合起來,把各門課 程的知識聯(lián)系起來,對計(jì)算機(jī)整體的認(rèn)識更加深刻。使我加 深了對計(jì)算機(jī)操作系統(tǒng) ,編譯原理 ,算法分析與設(shè)計(jì) c 語言四門課程的認(rèn)識。 篇二:編譯原理 學(xué)習(xí)心得 國際學(xué)院 0802 楊良燕 XX1910022
4、7 編譯原理課程學(xué)習(xí)心得 編譯原理是計(jì)算機(jī)專業(yè)的一門重要課程,正如教材 第一章的引論所述, “編譯程序是現(xiàn)代計(jì)算機(jī)系統(tǒng)的基 本組成部分之一” 。“一個(gè)編譯程序就是一個(gè)語言翻譯程序, 語言翻譯程序把一種語言(源語言)書寫的程序翻譯成另一 種語言 ( 目標(biāo)語言 ) 的等價(jià)程序” 。 通過這一學(xué)期的學(xué)習(xí),我覺得編譯原理是一門理論性 很強(qiáng)的課程,從文法和語言的概念到 LL(1) 文法和 LR( 0) 文法的分析,幾乎都是對具體問題的抽象。因而,我們需要 更多的時(shí)間來理解、掌握相關(guān)的知識,當(dāng)然在這一過程中也 存在很多問題,比如我們后期學(xué)習(xí)具體文法的分析方法時(shí), 對于文法的概念不夠清晰,影響了上課的效率,
5、知道老師再 次給我們講解了文法等基礎(chǔ)的知識點(diǎn),我們才慢慢掌握后面 所學(xué)的 LL(1) 文法等,也發(fā)現(xiàn)了知識點(diǎn)之間的關(guān)聯(lián)。此外, 這門課程的課時(shí)被安排得很少,一周只有一次,這樣很不利 于我們對這門重要課程的理解和掌握。但是我覺得我們很幸 運(yùn),因?yàn)槔蠋熢谟邢薜恼n程中盡量將知識點(diǎn)以比較容易接受 的方式給我們講解,教我們用簡單的方法理解記憶不同的知 識,對于我們提出的問題,無論課上或是課外,老師一直是 不厭其煩,甚至利用課余時(shí)間為我們講解重要的難題。 編譯原理這門課程不僅僅在于其本身的理論價(jià)值,更在 于為我們解決問題提供的思維方式和方法。從LL( 1)到 LR (0),問題不斷被解決的同時(shí),又有一個(gè)個(gè)
6、新的問題提了出 來。對計(jì)算機(jī)語言世界的知識積累, 像滾雪球一樣越滾越大。 這個(gè)逐漸遞進(jìn),逐漸解決問題的過程對我來說是收獲很大的。 整個(gè)過程好像踏著前人研究編譯理論的路線,不斷感覺他們 遇到的問題,更重要的是他們解決問題的思路。編譯原理的 課程帶給我的不只是如何去編譯程序這樣的理論知識,相信 更重要的是一種如何“自動計(jì)算”的思路。通過對相關(guān)編譯 問題的具體分析,讓我體會最深的是一種“自動計(jì)算”的思 想,同時(shí)完成編譯試驗(yàn)后,更是感到了一種“自動計(jì)算”的 快樂?!比欢颐靼鬃约弘m然對編譯有了一定的了解,我懂 得了文法的分析,學(xué)會了構(gòu)造確定和非確定有限自動機(jī),學(xué) 會了 LL(1) 文法和 LR(0)
7、文法等,但是并沒有完全掌握,對 于這些知識點(diǎn)的實(shí)質(zhì)性和其他方面,更是認(rèn)識不深。作為一 名學(xué)習(xí)計(jì)算機(jī)科學(xué)與技術(shù)的學(xué)生,我明白編譯原理是軟件工 程的基礎(chǔ),課程的結(jié)束并不意味著學(xué)習(xí)的結(jié)束,只有通過以 后的學(xué)習(xí),才能更深入地了解編譯原理。 篇三:編譯原理課程設(shè)計(jì)心得體會 編譯原理課程設(shè)計(jì)心得體會 經(jīng)過一個(gè)星期的編譯原理課程設(shè)計(jì),本人在劉貞老師 的指導(dǎo)下,順利完成該課程設(shè)計(jì)。通過該課程設(shè)計(jì),收獲頗 多。 一、對實(shí)驗(yàn)原理有更深的理解 通過該課程設(shè)計(jì),掌 握了什么是編譯程序,編譯程序工作的基本過程及其各階段 的基本任務(wù),熟悉了編譯程序總流程框圖,了解了編譯程序 的生成過程、構(gòu)造工具及其相關(guān)的技術(shù)對課本上的知
8、識有了 更深的理解,課本上的知識師機(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)用有 深刻的理解。 三、激發(fā)了學(xué)習(xí)的積極性 通過該課程設(shè)計(jì),全面系統(tǒng) 的理解了編譯原理程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法。把 死板的課本知識變得生動有趣,激發(fā)了學(xué)習(xí)的積極性。把學(xué) 過的計(jì)算機(jī)編譯原理的知識強(qiáng)化,能夠把課堂上學(xué)的知識通 過自己設(shè)計(jì)的程序表示出來,加深了對理論知識
9、的理解。以 前對與計(jì)算機(jī)操 作系統(tǒng)的認(rèn)識是模糊的,概念上的,現(xiàn)在 通過自己動手做實(shí)驗(yàn),從實(shí)踐上認(rèn)識了操作系統(tǒng)是如何處理 命令的,如何協(xié)調(diào)計(jì)算機(jī)內(nèi)部各個(gè)部件運(yùn)行,對計(jì)算機(jī)編譯 原理的認(rèn)識更加深刻。課程設(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í)踐動手能 力和程序開發(fā)能力的目的。 四、理解了該知識點(diǎn)以及學(xué)科 之間的融合滲透 本次課程設(shè)計(jì)程序部分是用 c 語言編寫的, 把計(jì)算機(jī)操作系統(tǒng) ,編譯原理,算法分析與設(shè)計(jì) c 語言四門學(xué)科聯(lián)系起來, 把各個(gè)學(xué)科之間的
10、知識融合起來, 把各門課程的知識聯(lián)系起來,對計(jì)算機(jī)整體的認(rèn)識更加深刻。 使我加深了對計(jì)算機(jī)操作系統(tǒng) ,編譯原理 ,算法分析 與設(shè)計(jì) c 語言四門課程的認(rèn)識。 篇四:編譯原理總結(jié) 1 編譯程序: 從高級語言到匯編語言或機(jī)器語言的翻譯 程序 2. 源程序:用匯編語言或高級語言編寫的程序 3. 目標(biāo)程序 : 用目標(biāo)語言所表示的程序。 目標(biāo)語言: 介于源語言和機(jī)器語言之間的 “中間語言” ,也可以是某種 機(jī)器的機(jī)器語言 , 也可以是 某機(jī)器的匯編語言。 4 翻譯程序 : 將源程序轉(zhuǎn)換為目標(biāo)程序的程序稱為翻譯 程序。 5 賦 值 語 句 的 語 法 規(guī) 則 : A:=V=E E:=T|E+T T:=F|
11、T*F F:=V|(E)|C V:=標(biāo)識符 C:= 常數(shù) 6 遍:對源程序(包括源程序中間形式)從頭到尾掃描 一次,并做有關(guān)的加工處理,生成新的源程序中間形式或目 標(biāo)程序,通常稱之為一遍。 優(yōu)點(diǎn):節(jié)省內(nèi)存空間,提高目標(biāo)代碼質(zhì)量,邏輯機(jī)構(gòu)清 晰 缺點(diǎn):編譯時(shí)間較長,會增加輸入輸出所消耗的時(shí)間, 在內(nèi)存許可下少用為妙 7 前端: 通常將與源程序有關(guān)的編譯部分稱為前端。 包 括詞法分析,語法分析,語義分析,等分析部分 后端:與目標(biāo)機(jī)有關(guān)的部分稱為后端。包括中間代碼生 成,代碼優(yōu)化,目標(biāo)程序生成等綜合部分 8 編譯程序構(gòu)成部分以及功能:( 1)詞法分析(掃描 器):輸入源程序, 對構(gòu)成源程序的字符串進(jìn)
12、行掃描和分解, 識別出一個(gè)個(gè)的單詞及其有關(guān)屬性,并轉(zhuǎn)換成屬性字。( 2) 語法分析 (分析器 ) :在詞法分析的基礎(chǔ)上,根據(jù)語言的語法 規(guī)則,逐一分析詞法分析時(shí)得到的屬性字,檢查語法錯(cuò)誤, 若沒有錯(cuò)誤, 則給出正確的語法結(jié)構(gòu) (如短語、 子句、句子、 程序段、程序等) 。( 3)語義分析 ( 語義處理 ) :語法分析識 別出的各類語法范疇,分析其含義 , 進(jìn)行和初步翻譯,產(chǎn)生 介于源代碼和目標(biāo)代碼之間的一種代碼“中間代碼” ?;蛘?直接生成目標(biāo)代碼。 ( 4)優(yōu)化:依據(jù)程序的等價(jià)變換規(guī)則, 盡量壓縮 目標(biāo)程序運(yùn)行時(shí)所需的時(shí)間和所占的存儲空間,以提高 目標(biāo)程序的質(zhì)量( 5)目標(biāo)代碼生成:把經(jīng)過優(yōu)
13、化的中間代 碼轉(zhuǎn)化成特定機(jī)器上的低級語言代碼。 9 計(jì)算機(jī)執(zhí)行用高級語言編寫的程序途徑有兩種:解釋 方式和編譯方式。 根本區(qū)別:是否生成了目標(biāo)代碼。 解釋 方式下,翻譯程序事先并不對高級語言程序進(jìn)行徹底翻譯以 得到機(jī)器代碼,而是讀入一條語句,就解釋其含義并執(zhí)行, 然后再讀入下一條語句,再解釋執(zhí)行,即按,源程序中語句 的動態(tài)順序逐句地進(jìn)行分析解釋,并立即予以執(zhí)行。 編譯 方式下,翻譯程序先對高級語言程序進(jìn)行徹底翻譯并生成目 標(biāo)代碼,然后再對目標(biāo)代碼進(jìn)行執(zhí)行,即對源程序的處理是 先翻譯后執(zhí)行。簡單來說解釋方式不生成目標(biāo)代碼,編譯方 式生成目標(biāo)代碼 10 編譯程序采用多遍掃描還是單編掃描需要考慮哪些
14、 因素 不一定,多遍編譯器結(jié)構(gòu)清晰,構(gòu)造時(shí)間短,運(yùn)行時(shí) 需要內(nèi)存少,產(chǎn)生的目標(biāo)代碼質(zhì)量高,但時(shí)間效率低, 應(yīng)該根據(jù)具體情況決( 1)語句的大小與結(jié)構(gòu), ( 2)機(jī) 器規(guī)模( 3)設(shè)計(jì)目的( 4)設(shè)計(jì)人員的素質(zhì)及數(shù)量。 11 比 較 LR(0),SLR(1),LR ( 1)和 LALR(1) 分析表的優(yōu)缺點(diǎn) (1)LR ( 0)分析表局限性大,但其構(gòu)造方法是其他構(gòu) 造方法的基礎(chǔ) (2)SLR分析表雖然不是對所有文法都存在,但這種分 析表狀態(tài)少,存儲空間占用少,較易實(shí)現(xiàn)又極有實(shí)用價(jià)值。 ( 3)規(guī)范 LR 分析表,即 LR( 1 )分析表,它的,它的 分析能力最強(qiáng),能適用于一大類文法,但是實(shí)現(xiàn)代價(jià)
15、過高, 主要是體積過大 (4)LALR分析表的能力介于 SLR分析表和 規(guī)范LR分析表之間,稍加努力,就可以高效的實(shí)現(xiàn)。 12比較LL( K)分析表與LR( K)分析法共同點(diǎn):(1) 兩者多借助于可能句柄左部的全部符號及向右看 K個(gè)符號來 確定所應(yīng)執(zhí) 行的唯一動作, 識別過程嚴(yán)格地從左到右掃描, 無回溯, 效率高。(2)都能及時(shí)察覺錯(cuò)誤 2。( 3)識別程序都能自動 生成。 區(qū)別:( 1)兩者都是嚴(yán)格地從左到右掃描,名稱中 第一個(gè) L 隱指這點(diǎn),但 LR 分析技術(shù)利用的是最右推導(dǎo)(最 左歸約),由R隱指,LL (K)分析利用的是最左推導(dǎo),由第 二個(gè)L隱指。(2) LL (K)要求文法無左遞歸,
16、滿足無回溯 的條件,而LR分析法則無此限制。(3)LL( K)是自上而下 構(gòu)造推導(dǎo)的,而 LR( K)是自下而上構(gòu)造歸約的。13語法 制導(dǎo)翻譯過程:對單詞符號串進(jìn)行語法分析,構(gòu)造語法分析 樹,構(gòu)造屬性依賴圖,遍歷語法樹并在語法樹各結(jié)點(diǎn)處按語 義規(guī)則計(jì)算順序。 14 靜態(tài)語義檢查: 類型檢查, 控制流檢查, 一致性檢查, 相關(guān)名字檢查,名字的作用域分析。 15 引入中間代碼的好處: ( 1)便于進(jìn)行與機(jī)器無關(guān)的代碼優(yōu)化工作( 2)使編 譯程序更容易改變目標(biāo)機(jī) ( 3)使編譯程序的結(jié)構(gòu)在邏輯上更為簡單明確,以中 間語言為界限,編譯前端和后端的接口更清晰。16 編譯程 序分類 ( 1 )診斷編譯程序
17、 ( 2)優(yōu)化編譯程序( 3)交叉 編譯程序 ( 4)可變目標(biāo)編譯程序 17 編譯程序工作過程 5 個(gè)階段及其任務(wù): ( 1 )詞法分 析:任務(wù)是從左到右逐個(gè)字符的讀入源程序,對構(gòu)成源程序 的字符流進(jìn)行掃描和分解,進(jìn)而識別一個(gè)個(gè)單詞。 (2)語法分析:任務(wù)是根據(jù)語法規(guī)則,分析并識別出 各種語法成分,并經(jīng)行語法正確性檢查。 ( 3)語義分析與中間代碼生成:任務(wù)是對識別出的各 種語法成分進(jìn)行語義分析,并產(chǎn)生相應(yīng)的中間代碼。 ( 4)目標(biāo)代碼生成:任務(wù)是把中間代碼轉(zhuǎn)換成特定機(jī) 器上的低級語言代碼。 18 編譯程序和解釋程序 ( 1)編譯程序需要在運(yùn)行前將源代碼譯成目標(biāo)代碼, 解釋程序接受某個(gè)語言的程
18、序并立即運(yùn)行這個(gè)源程序 ( 2)二者存儲組織有著很大不同,編譯程序處理時(shí)存 儲區(qū)要存儲編譯用時(shí)需要的各種表格;解釋程序?qū)⒎治鼋Y(jié)果 存放在源程序區(qū) ( 3)編譯程序動態(tài)性很差, 可形成永久性可執(zhí)行文件, 解釋程序動態(tài)性較好。 19 程序性合計(jì)語言范型: ( 1)強(qiáng)制(命令)式語言: c,fortron,pasal( 2)函 數(shù)式語言: ML,Lisp ( 3 )基于規(guī)則(邏輯)的語言: prolog ( 4 )面向?qū)?象語言: Ada,c+,java 1. 推導(dǎo): 自上而下的語法分析過程 預(yù)測分析程序,遞歸下降分析法(最左推導(dǎo)) 注:要求文法是 LL(1) 文法 2. 歸約: 自下而上的語法分析
19、過程 簡單優(yōu)先分析法,算符優(yōu)先分析法、 LR 分析法 3 3. 自下而上的語法分析過程思想 自下而上的語法分析過程是一個(gè)最左歸約的過程,從 輸入串開始。朝著文法的開始符號進(jìn)行歸約,直到到達(dá)文法 的開始符號為止的過程 注意:輸入串在這里是指從詞法分 析器送來的單詞符號組成的二元式的有限序列 。 即:自 左至右把輸入串的符號一個(gè)一個(gè)移進(jìn)棧,在移進(jìn)過程中不斷 查看棧頂符號串,一旦形成某個(gè)句型的句柄時(shí),就將此句柄 用相應(yīng)的產(chǎn)生式左部替換(歸約) ,若再形成句柄,就繼續(xù) 替換,直到棧頂不再形成句柄為止,然后繼續(xù)移進(jìn)符號,重 復(fù)上面的過程直到棧頂只剩下文法的開始符號,輸入串讀完 為止,這樣就認(rèn)為識別了一個(gè)
20、句子。 1)初態(tài)時(shí)棧內(nèi)僅有棧底符“ #”,讀頭指在最左邊的單 詞符號上 . 2)語法分析程序執(zhí)行的動作: a) 移進(jìn):讀入一個(gè)單詞并壓入棧內(nèi),讀頭后移; b) 歸約:檢查棧頂若干個(gè)符號能否進(jìn)行歸約,若能,就 以產(chǎn)生式左部替代該符號串,同時(shí)輸出產(chǎn)生式編號 . c) 識別成功:移進(jìn)歸約的結(jié)局是棧內(nèi)只剩下棧底符號 和文法開始符號,讀頭也指向語句的結(jié)束符 . d)識別失敗 . 令G是一個(gè)文法,S是文法的開始符號,假定 a 8是 文法G的一個(gè)句型,如果有 Sa A8且A B 則稱B是句型a B 8相對于非終結(jié)符 A的短語。 特別是,如果有 A B 則稱B是句型a B 8相對于規(guī)則 A B的直接短語,一
21、個(gè)句型的最左直接短語稱為該句型的句柄。 注: 一個(gè)句型的語法樹中任一子樹葉節(jié)點(diǎn)所組成的符 號串就是該句型的短語,當(dāng)子樹中不包含其他更小的子樹時(shí), 該子樹結(jié)點(diǎn)所組成的字符串就是該句型的直接 (簡單)短語。 素短語: 一個(gè)遞歸的定義,至少含有一個(gè)終結(jié)符,并 且除它自身之外不在含有任何更小的素短語, (所謂最左素 短語就是處于句型最左邊的素短語) 。 簡單優(yōu)先分析法: 1. 確定相鄰文法符號之間的優(yōu)先關(guān)系 在句型中,句柄內(nèi)各相鄰符號之間具有相同的優(yōu)先級,相同 優(yōu)先級用“ ” 由于句柄要先歸約 , 所以規(guī)定句柄兩端符號的優(yōu)先級要 比位于句柄之外的相鄰符號的優(yōu)先級高, 優(yōu)先級低于表示為 “V”,優(yōu)先級高
22、于表示為“ ” 某句型中:N1.Ni-1定義:一個(gè)文法 G如果它不 含 e 產(chǎn)生式,也不含任何右部相 同的不同產(chǎn)生式,并且它的任何符號對( X, Y) X, 丫是終結(jié)符或非終結(jié)符一一或者沒有關(guān)系, 或者存在優(yōu)先級相同或低于、高于等關(guān)系之一, 則這是一個(gè)簡單優(yōu)先文法。 1LR(0) 文法:該文法的以 LR(0) 項(xiàng)目集為狀態(tài)的識別 規(guī)范句型活前綴的 DFA 中沒有沖突狀態(tài)。 2 SLR(1) 文法:該文法的以 LR(0) 項(xiàng)目集為狀態(tài)的識 別規(guī)范句型活前綴的 DFA 中有沖突狀態(tài),沖突可用 FOLLOW 集解決。 該文法不是 SLR(1) 文法。 因?yàn)?FOLLOW(S)=a,b,# ,所以無法
23、解決沖突 3算符優(yōu)先:(T) ()(6章) 1. 靜態(tài)語義檢查包括:( 1)類型檢查 ( 2)控制流檢 查 ( 3)一致性檢查 ( 4)相關(guān)名字檢查 ( 5)名字的作用 域分析 2. 引入中間代碼的好處: ( 1)便于進(jìn)行與機(jī)器無關(guān)的代碼優(yōu)化工作( 2)使編 譯程序更容易改變目標(biāo)機(jī) ( 3)使編譯程序的結(jié)構(gòu)在邏輯上更為簡單 明確,以中間語言為界限,編譯前端和后端的接口更清 晰。 1 章) 1. 源程序: 用編譯語言或高級語言編寫的程 目標(biāo)程序:用目標(biāo)語言表示的程序 翻譯程序: 將源程序轉(zhuǎn)換為目標(biāo)程序的程序。 2. 編譯程序分類 ( 1)診斷編譯程序 (2)優(yōu)化編譯程 序 ( 3)交叉編譯程序
24、(4)可變目標(biāo)編譯程序 3. 編譯程序工作過程 5 個(gè)階段及其任務(wù): (1)詞法分 析:任務(wù)是從左到右逐個(gè)字符的讀入源程序,對構(gòu)成源程序 的字符流進(jìn)行掃描和分解,進(jìn)而識別一個(gè)個(gè)單詞。 (2)語法分析:任務(wù)是根據(jù)語法規(guī)則,分析并識別出 各種語法成分,并經(jīng)行語法正確性檢查。 ( 3)語義分析與中間代碼生成:任務(wù)是對識別出的各 種語法成分進(jìn)行語義分析,并產(chǎn)生相應(yīng)的中間代碼。 ( 4)目標(biāo)代碼生成:任務(wù)是把中間代碼轉(zhuǎn)換成特定機(jī) 器上的低級語言代碼。 4. 編譯程序和解釋程序 ( 1)編譯程序需要在運(yùn)行前將源代碼譯成目標(biāo)代碼, 解釋程序接受某個(gè)語言的程序并立即運(yùn)行這個(gè)源程序 ( 2)二者存儲組織有著很大
25、不同,編譯程序處理時(shí)存 儲區(qū)要存儲編譯用時(shí)需要的各種表格;解釋程序?qū)⒎治鼋Y(jié)果 存放在源程序區(qū) ( 3)編譯程序動態(tài)性很差, 可形成永久性可執(zhí)行文件, 解釋程序動態(tài)性較好。 5. 程序性合計(jì)語言范型: ( 1)強(qiáng)制(命令)式語言: c,fortron,pasal( 2)函 數(shù)式語言: ML,Lisp ( 3)基于規(guī)則(邏輯)的語言: prolog ( 4)面向?qū)ο笳Z言: Ada,c+,java 6. 構(gòu)造編譯程序必須掌握的三方面內(nèi)容:( 1)源程序 ( 2)目標(biāo)語言 (3)編譯方法 7. 編譯前端和后端 前端:通常指與源程序有關(guān)的編譯部分, 包括詞法分析, 語法分析,語義分析,特點(diǎn)是與源程序有關(guān)
26、。 后端:與目標(biāo)機(jī)有關(guān)的部分,包括中間代碼生成,代碼 優(yōu)化,目標(biāo)程序生成,特點(diǎn)是與目標(biāo)機(jī)有關(guān)。 1. 推導(dǎo): 自上而下的語法分析過程 預(yù)測分析程序,遞歸下降分析法(最左推導(dǎo)) 注:要求文法是 LL(1) 文法 2. 歸約: 自下而上的語法分析過程 簡單優(yōu)先分析法,算符優(yōu)先分析法、 LR 分析法 3 3. 自下而上的語法分析過程思想 自下而上的語法分析過程是一個(gè)最左歸約的過程,從 輸入串開始。朝著文法的開始符號進(jìn)行歸約,直到到達(dá)文法 的開始符號為止的過程 注意:輸入串在這里是指從詞法分 析器送來的單詞符號組成的二元式的有限序列 。 即:自 左至右把輸入串的符號一個(gè)一個(gè)移進(jìn)棧,在移進(jìn)過程中不斷 查
27、看棧頂符號串,一旦形成某個(gè)句型的句柄時(shí),就將此句柄 用相應(yīng)的產(chǎn)生式左部替換(歸約) ,若再形成句柄,就繼續(xù) 替換,直到棧頂不再形成句柄為止,然后繼續(xù)移進(jìn)符號,重 復(fù)上面的過程直到棧頂只剩下文法的開始符號,輸入串讀完 為止,這樣就認(rèn)為識別了一個(gè)句子。 1)初態(tài)時(shí)棧內(nèi)僅有棧底符“ #”,讀頭指在最左邊的單 詞符號上 . 2)語法分析程序執(zhí)行的動作: a) 移進(jìn):讀入一個(gè)單詞并壓入棧內(nèi),讀頭后移; b) 歸約:檢查棧頂若干個(gè)符號能否進(jìn)行歸約,若能,就 以產(chǎn)生式左部替代該符號串,同時(shí)輸出產(chǎn)生式編號 . c) 識別成功:移進(jìn)歸約的結(jié)局是棧內(nèi)只剩下棧底符號 和文法開始符號,讀頭也指向語句的結(jié)束符 . d)
28、 識別失敗 . 令G是一個(gè)文法,S是文法的開始符號,假定 a 8是 文法G的一個(gè)句型,如果有 S a A8且A B 則稱B是句型a B 8相對于非終結(jié)符 A的短語。 特別是,如果有 A B 則稱B是句型a B 8相對于規(guī)則 At B 的直接短語,一個(gè)句型的最左直接短語稱為該句型的句 柄。 注: 一個(gè)句型的語法樹中任一子樹葉節(jié)點(diǎn)所組成的符 號串就是該句型的短語,當(dāng)子樹中不包含其他更小的子樹時(shí), 該子樹結(jié)點(diǎn)所組成的字符串就是該句型的直接 (簡單) 短語 素短語: 一個(gè)遞歸的定義,至少含有一個(gè)終結(jié)符,并 且除它自身之外不在含有任何更小的素短語, (所謂最左素 短語就是處于句型最左邊的素短語) 。 簡
29、單優(yōu)先分析法: 1. 確定相鄰文法符號之間的優(yōu)先關(guān)系 在句型中,句柄內(nèi)各相鄰符號之間具有相同的優(yōu)先級,相同 優(yōu)先級用“ ” 由于句柄要先歸約 , 所以規(guī)定句柄兩端符號的優(yōu)先級要 比位于句柄之外的相鄰符號的優(yōu)先級高 , 優(yōu)先級低于表示為 “V”,優(yōu)先級高于表示為“ ” 某句型中:N1.Ni-1定義:一個(gè)文法 G如果它不含 e 產(chǎn)生式,也不含任何右部相 同的不同產(chǎn)生式,并且它的任何符號對( X,Y) X,丫是終結(jié)符或非終結(jié)符或者沒有關(guān)系, 或者存在優(yōu)先級相同或低于、高于等關(guān)系之一, 則這是一個(gè)簡單優(yōu)先文法。 篇五:編譯原理課程設(shè)計(jì)學(xué)習(xí)心得體會 一周的課程設(shè)計(jì)很快過去,總體感覺得做得很不爽 因?yàn)榭荚?/p>
30、的原因,所有想盡快把這個(gè)課程設(shè)計(jì)做完,所以就 直接改了老師的程序,以為這樣會快一些,事實(shí)證明,確實(shí) 如此,但是做起來很不順手,程序員更討厭的是看別人的程 序。不知道變量的含義,函數(shù)的作用。還有就是對 vc 不是 很熟,不僅開發(fā)環(huán)境不熟,就連 c ( 其實(shí)應(yīng)該說是 c) 的一些 常用函數(shù)都忘得一干凈,就好比字符轉(zhuǎn)化為整型 (atoi) 和整 型轉(zhuǎn)化為字符型 (itoa) 這兩個(gè)函數(shù),根本不認(rèn)識,還是在 google 上搜索到的資料。 c 確實(shí)有很多不完美的地方, 我最 煩的就是指針,指來指去的很讓人頭疼。還有就有字符串的 轉(zhuǎn)換等一些操作,沒有 java 來得方便。如果自己獨(dú)立編寫 代碼的話,我會
31、首先考慮用 java ,其次考慮用 c# ,最后才 用 c 。至于用什么 asp,jsp 來做,我也可以做,這些動態(tài)頁 語 言都接觸過,只可惜自己技不如人,不能在兩天的時(shí)間 內(nèi),把程序編出來,只能用最快的方法,用現(xiàn)成的改。因考 慮到編譯是一門考研科目,所以自己打算在考試結(jié)束以后再 完完整整地做一個(gè)。總的來說,課程設(shè)計(jì)加深了自己對編譯 這門課的理解,發(fā)現(xiàn)自己還有很多的地方要復(fù)習(xí),甚至還有 知識點(diǎn)的理解偏差。一定在考試把所有的漏動填平。 篇六:編譯原理實(shí)驗(yàn)心得 編譯原理實(shí)驗(yàn)心得 第一章、引論 經(jīng)過這一章節(jié)的學(xué)習(xí)我學(xué)到了如下知識: 1. 自1954年FROTRAN語言問世以來,計(jì)算機(jī)高級語言 的到迅
32、速發(fā)展。高級語言給編程帶來了極大的方便,但是計(jì) 算機(jī)只能直接執(zhí)行用機(jī)器語言編寫的程序,不能直接執(zhí)行用 高級語言編寫的程序。要執(zhí)行高級語言程序,必須提供該語 言的翻譯程序。翻譯有編譯和解釋兩種方式。編譯方式是先 將源程序翻譯成目標(biāo)程序,然后再執(zhí)行目標(biāo)程序,相應(yīng)的翻 譯程序稱為編譯程序。解釋方式是邊翻譯邊執(zhí)行,相應(yīng)的翻 譯程序稱為解釋程序。 2、編譯理論和技術(shù)主要研究和討論編譯程序的構(gòu)造和 設(shè)計(jì)原理。 3、編譯程序一般包括詞法分析程序、語法分析程序、 語義分析程序、中間代碼生成程序、代碼優(yōu)化程序、目標(biāo)代 碼生成程序、表格處理程序和出錯(cuò)處理程序等。 4、編譯過程可采用分遍形式,及編譯過程可由一遍或
33、多遍完成。 5、對于具有自編譯性的高級語言,可運(yùn)行自展技術(shù)構(gòu) 造其編譯程序,即將源程序分解成核心部分和擴(kuò)充部分,對 核心部分進(jìn)行多次擴(kuò)充之后得到源語言。 6、一個(gè)具有自編譯性的高級語言在宿主機(jī)上的編譯程 序可以移植到目標(biāo)機(jī)上。 YACC 7、LEX 是一個(gè)有代表性的詞法分析程序生成器。 是一種基于 LALR ( 1)分析法的語法分析程序生成器。凡是有助于減少 編寫翻譯程序工作的軟件或工具包,統(tǒng)稱為翻譯程序的編寫 系統(tǒng)。 8、傳統(tǒng)的串行編譯程序只適應(yīng)于 SISD 結(jié)構(gòu)計(jì)算機(jī),具 有并行處理功能的并行編譯程序則適于SISD和MISD結(jié)構(gòu)計(jì) 算機(jī)。 第二章、形式語言概論 1、形式語言由Chomsky
34、于1956年提出,其理論的形成 和發(fā)展推動了計(jì)算機(jī)考完學(xué)技術(shù)發(fā)展。形式語言理論是編譯 原理的重要理論基礎(chǔ)。 2、文法是形式語言中十分重要的基本概念。文法可以 定義為一個(gè)四 元組,文法 G=(VN? VT,P,S)。其中,VN是一個(gè)非終 結(jié)符集,VT是一個(gè)終結(jié)符集,P是一個(gè)產(chǎn)生式集,S屬于VN 是文法的識別符。 3、Chomsky將文法分類為0型、1型、2型、3型文法。 程序設(shè)計(jì)語言的語法規(guī)則屬于 3 型文法(正規(guī)文法) 。程序 設(shè)計(jì)的語言和語義部分,一般屬于 1 型文法(上下文有關(guān)文 法),但實(shí)際上都是采用 2 型文法(上下文無關(guān)文法)來描 述語法。 4、對于一個(gè)文法,我們需要研究它的句型、句
35、子和語 言。要識別一個(gè)符號串是不是一個(gè)文法的合法句子,需要對 它進(jìn)行語法分析。 分析方法有兩類, 一列是自上而下分析法, 另一類是自下而上分析法。 5、為了進(jìn)行語法分析,需要事先將文法的產(chǎn)生式存儲 在計(jì)算機(jī)中,可以為文法建立一個(gè)產(chǎn)生式表,把文法的所有 產(chǎn)生式都放在這個(gè)產(chǎn)生式表中。為了在分析過程中能迅速地 查找到相應(yīng)的產(chǎn)生式,還可以再建立一個(gè)目錄表。 第三章、有窮自動機(jī) 1、自動機(jī)是一種能進(jìn)行運(yùn)算并能實(shí)行自我控制的裝置。 它是描述符號串處理的強(qiáng)有力地工具,是研究掃描器的理論 基礎(chǔ)。有窮自動機(jī)分為確定有窮自動機(jī)(DFA和非確定有 窮自動機(jī)( NFA)。 2、DFA=( Q E, t , q0, F),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版貓咪寵物攝影與視頻制作合同3篇
- 2025年度泥工工程進(jìn)度結(jié)算合同樣本4篇
- 二零二五年度土地承包與農(nóng)業(yè)現(xiàn)代化建設(shè)協(xié)議3篇
- 二零二五年度別墅產(chǎn)權(quán)購置定金協(xié)議范本3篇
- 2025年度牛羊屠宰場與銷售商合作協(xié)議集錦4篇
- 二零二五年度農(nóng)家樂旅游紀(jì)念品開發(fā)與銷售合同3篇
- 二零二五版高端別墅木屋建造工程合同4篇
- 二零二五年度存款居間業(yè)務(wù)電子簽名應(yīng)用合同3篇
- 數(shù)字貨幣監(jiān)管策略-第1篇-深度研究
- 二零二五年度水電工程環(huán)保驗(yàn)收與整改承包合同匯編3篇
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 小王子-英文原版
- 新版中國食物成分表
- 2024年山東省青島市中考生物試題(含答案)
- 河道綜合治理工程技術(shù)投標(biāo)文件
- 專題24 短文填空 選詞填空 2024年中考英語真題分類匯編
- 再生障礙性貧血課件
- 產(chǎn)后抑郁癥的護(hù)理查房
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 電能質(zhì)量與安全課件
- 工程項(xiàng)目設(shè)計(jì)工作管理方案及設(shè)計(jì)優(yōu)化措施
評論
0/150
提交評論