第一篇:編譯原理課程設計心得體會
編譯原理課程設計心得體會
經過一個星期的編譯原理課程設計,本人在劉貞老師的指導下,順利完成該課程設計。通過該課程設計,收獲頗多。
一、對實驗原理有更深的理解
通過該課程設計,掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務,熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構造工具及其相關的技術對課本上的知識有了更深的理解,課本上的知識師機械的,表面的。通過把該算法的內容,算法的執行順序在計算機上實現,把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。
二、對該理論在實踐中的應用有深刻的理解
通過把該算法的內容,算法的執行順序在計算機上實現,知道和理解了該理論在計算機中是怎樣執行的,對該理論在實踐中的應用有深刻的理解。
三、激發了學習的積極性
通過該課程設計,全面系統的理解了編譯原理程序構造的一般原理和基本實現方法。把死板的課本知識變得生動有趣,激發了學習的積極性。把學過的計算機編譯原理的知識強化,能夠把課堂上學的知識通過自己設計的程序表示出來,加深了對理論知識的理解。以前對與計算機操
作系統的認識是模糊的,概念上的,現在通過自己動手做實驗,從實踐上認識了操作系統是如何處理命令的,如何協調計算機內部各個部件運行,對計算機編譯原理的認識更加深刻。課程設計中程序比較復雜,在調試時應該仔細,在程序調試時,注意指針,將不必要的命令去除。
在這次課程設計中,我就是按照實驗指導的思想來完成。加深了理解文件系統的內部功能及內部實現,培養實踐動手能力和程序開發能力的目的。
四、理解了該知識點以及學科之間的融合滲透
本次課程設計程序部分是用c語言編寫的,把《計算機操作系統》,《編譯原理》,《算法分析與設計》《c語言》四門學科聯系起來,把各個學科之間的知識融合起來,把各門課程的知識聯系起來,對計算機整體的認識更加深刻。使我加深了對《計算機操作系統》,《編譯原理》,《算法分析與設計》《c語言》四門課程的認識。
第二篇:編譯原理課程設計心得體會
經過一個星期的編譯原理課程設計,本人在劉貞老師的指導下,順利完成該課程設計。通過該課程設計,收獲頗多。
一、對實驗原理有更深的理解
通過該課程設計,掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務,熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構造工具及其相關的技術對課本上的知識有了更深的理解,課本上的知識師機械的,表面的。通過把該算法的內容,算法的執行順序在計算機上實現,把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。
二、對該理論在實踐中的應用有深刻的理解
通過把該算法的內容,算法的執行順序在計算機上實現,知道和理解了該理論在計算機中是怎樣執行的,對該理論在實踐中的應用有深刻的理解。
三、激發了學習的積極性本文轉載在www.tmdps.cn代寫之家
通過該課程設計,全面系統的理解了編譯原理程序構造的一般原理和基本實現方法。把死板的課本知識變得生動有趣,激發了學習的積極性。把學過的計算機編譯原理的知識強化,能夠把課堂上學的知識通過自己設計的程序表示出來,加深了對理論知識的理解。以前對與計算機操
copyright
www.chazidian
作系統的認識是模糊的,概念上的,現在通過自己動手做實驗,從實踐上認識了操作系統是如何處理命令的,如何協調計算機內部各個部件運行,對計算機編譯原理的認識更加深刻。課程設計中程序比較復雜,在調試時應該仔細,在程序調試時,注意指針,將不必要的命令去除。
在這次課程設計中,我就是按照實驗指導的思想來完成。加深了理解文件系統的內部功能及內部實現,培養實踐動手能力和程序開發能力的目的。
第三篇:編譯原理課程設計
課 程 設 計 報 告
設計題目:一個簡單文法的編譯器前端的設計與實現
班
級: 計算機1206 組長學號:201239 組長姓名:閆智宣 指導教師:李曉華 設計時間:2014年12月
[在此處鍵入]
設計分工
組長學號及姓名: 20123974
閆智宣
分工:
語法分析,四元式生成,目標代碼優化及生成 組員1學號及姓名:20123977
廖峭 分工:
詞法分析,錯誤處理 組員2學號及姓名:20123959
郭天龍
分工:
符號表生成,語義動作插入,操作界面[在此處鍵入]
摘要
編譯原理課程設計是通過C語言編譯器相關子系統的設計,進一步加深對編譯器構造的理解;第一部分詞法分析,設計各單詞的狀態轉換圖,并為不同的單詞設計種別碼,制作掃描器識別一個個單詞,返回值為識別碼的序號,返回Token序列。將詞法分析器設計成供語法分析器調用的子程序。詞法分析器具備預處理功能。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設計一個供詞法分析調用的預處理子程序;第二部分,語法分析,用遞歸下降法,實現對表達式、各種說明語句、控制語句進行語法分析。若語法正確,則用語法制導翻譯法進行語義翻譯;生成并打印出語法樹;若語法錯誤,要求指出出錯性質和出錯位置(行號)。
我們還做了附加功能,即編譯后端,有中間代碼優化,生成目標代碼匯編語言。通過此次課程設計,提高了我們的獨立分析問題、解決問題的能力,以及系統軟件設計的能力; 提高程序設計能力、程序調試能力,團結協作能力
關鍵詞:詞法分析,語法分析,四元式生成,錯誤處理,符號表生成,語義動作插入,中間代碼優化,生成目標代碼 [在此處鍵入]
目錄
摘要
1.概述
2.課程設計任務及要求
2.1 設計任務
2.2 設計要求
3.算法及數據結構
3.1算法的總體思想(流程)
3.2 詞法分析模塊
3.2.1 功能
3.2.2 數據結構
3.2.3 算法
3.3 語法分析模塊
3.3.1功能
3.3.2 數據結構
3.3.3算法
3.4 符號表模塊
3.4.1功能
3.4.2 數據結構
3.4.3算法
3.5 四元式模塊
3.5.1功能
[在此處鍵入]
3.5.2 數據結構
3.5.3算法
3.6 語義動作分析模塊
3.6.1功能 3.6.2 數據結構
3.6.3算法
3.7 錯誤處理模塊
3.7.1功能
3.7.2 數據結構
3.7.3算法
3.8 目標代碼模塊
3.8.1功能
3.8.2 數據結構
3.8.3算法
4.程序設計與實現
4.1 程序流程圖
4.2 程序說明
4.3 實驗結果
5.結論 6.參考文獻。7.收獲、體會和建議。
[在此處鍵入]
1.概述
編譯器是將C語言翻譯為匯編語言代碼的計算機程序。編譯器將源程序(source language)編寫的程序作為輸入,翻譯產生目標語言(target language)機器代碼的等價程序。通常地,源程序為高級語言(high-level language),C語言程序,而目標則是 機器語言的目標代碼(object code),也就是可以在計算機硬件中運行的機器代碼軟件程序。這一過程可以表示為:
源程序→編譯器 →目標機器代碼程序
2.課程設計任務及要求
2.1設計任務
學生在學習《編譯原理》課程過程中,結合各章節的構造編譯程序的基本理論,要求用C#語言描述及上機調試,實現一個 C編譯程序(包括詞法分析,語法分析等重要子程序),使學生將理論與實際應用結合起來,受到軟件設計等開發過程的全面訓練,從而提高學生軟件開發的能力。
2.2設計要求 要求:
(1)設計詞法分析器
設計各單詞的狀態轉換圖,并為不同的單詞設計種別碼。將詞法分析器設計成供語法分析器調用的子程序。功能包括:
a.具備預處理功能。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設計一個供詞法分析調用的預處理子程序;
b.能夠拼出語言中的各個單詞; [在此處鍵入]
c.返回(種別碼,屬性值,行號)。
(2)語法分析
要求用學習過的自底向上或自頂向下的分析方法等,實現對表達式、各種說明語句、控制語句進行語法分析。若語法正確,則用語法制導翻譯法進行語義翻譯;生成并打印出語法樹;若語法錯誤,要求指出出錯性質和出錯位置(行號)。
3.算法及數據結構
3.1算法的總體思想(流程)
本節主要分析程序的代碼結構和代碼工程文件的劃分。(程序由幾個類組成: Token類和Variable類SymbolTable類ObjectCode類Lexical類Grammar類Four_Yuan類Action類ErrorItem類,分別為詞法分析和語法分析類。工程分為幾個文件:Form1.cs,Token.cs,Variable.cs,SymbolTable.cs,ObjectCode.cs,Lexical.cs,Grammar.cs,Four_Yuan,cs,Action.cs,ErrorItem.cs分別對應Token類和Variable類SymbolTable類ObjectCode類Lexical類Grammar類Four_Yuan類Action類ErrorItem類的聲明和實現文件)。本程序采用C#語言以面向對象的思想編寫,程序分為幾部分:詞法分析(Lexical),語法分析(Grammer),目標代碼生成(ObjectCode)。Lexical類主要的工作是詞法分析獲取Token。Grammer類的主要工作是根據Lexical類詞法分析之后的Token進行語法分析,生成語法樹,最后并輸出語法樹。在處理過程中,Token類的對象作為Lexical類的一個成員變量,配合Grammer類進行語法分析。
工程文件總體上是按照九個類的格局分為十個文件,分別是九個類的聲明文件和實現文件。十個文件為Form1.cs,Token.cs,Variable.cs,SymbolTable.cs,ObjectCode.cs,Lexical.cs,Grammar.cs,Four_Yuan,cs,Action.cs,ErrorItem.cs,他們分別是Lexical類聲明文件、Lexical類實現文件、Grammer類聲明文件、Grammer類實現文件。[在此處鍵入]
程序流程
在程序中,Lexical類的對象(Token)作為Grammer類中的一個成員變量,配合Grammer類進行語法分析。它們的關系是這樣的:Grammer類的一個成員變量temp首先對源程序刪除注釋,然后進行詞法分析獲取所有Token,并將獲取的Token存儲在Token對象的tokenList(List類型)中。然后Grammer類的語法分析程序就根據tokenList中的Token進行語法分析,生成語法樹,最后打印語法樹。同時,這也是程序的流程。[在此處鍵入]
3.2 詞法分析模塊 3.2.1功能
Lexical類主要的工作是詞法分析獲取Token序列。
3.2.2數據結構
詞法分析階段的代碼被封裝成一個類——Lexical,Token中主要是Lexical類的聲明代碼,Lexical.cs中主要是Lexical類的實現代碼。Lexical類對外提供的函數主要有:
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),以上幾個函數構成了詞法分析的骨架,在Lexical類中還有其他成員變量和函數,主要作為這三個函數處理過程的中間步驟,為這三個函數服務。Lexical類的代碼結構和主要的成員變量和函數及其含義如下圖所示:
3.2.3算法
算法的基本任務是從字符串表示的源程序中識別出具有獨立意義的單詞符號,其基本思想是[在此處鍵入]
根據掃描到單詞符號的第一個字符的種類,拼出相應的單詞符號。
主程序示意圖:
主程序示意圖如圖3-1所示。
⑴ 關鍵字表的初值。
關鍵字作為特殊標識符處理,把它們預先安排在一張表格中(稱為關鍵字表),當掃描程序識別出標識符時,查關鍵字表。如能查到匹配的單詞,則該單詞為關鍵字,否則為一般標識符。
(2)程序中需要用到的主要變量為type和number 掃描子程序的算法思想:
首先設置3個變量: [在此處鍵入]
①token用來存放構成單詞符號的字符串; ②number用來整型單詞;
③type用來存放單詞符號的種別碼。
Token定義
Token定義:
Token類型(TokenType):
3.3 語法分析模塊
3.3.1功能
語法分析是編譯過程的一個邏輯階段。語法分析的功能是在詞法分析的基礎上將單詞序列組合成各類語法短語,如“程序”,“語句”,“表達式”等等.語法分析程序判斷源程序在結構上是否正確.源程序的結構由上下文無關文法描述.3.3.2 數據結構
下圖為實現語法分析的類Grammar,屬性與方法的作用都已說明 在此處鍵入]
3.3.3算法
1.文法
下面終結符與非終結符意義
B程序開始
Z 數據類型,如int,char,float等
V 標識符
S 語句
P 語句塊
E 加減算術表達式
D 逗號表達式
T 乘除算術表達式
C 關系表達式
L 邏輯表達式
Q 標識符或圓括號
e 表示空
i 表示標識符 a)函數文法
B----ZV()S
[
[在此處鍵入]
b)語句塊文法
P----SP|e
S----{P} c)語句文法
表達式語句文法
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)表達式文法
E----T|E+T|E-T
T----F|T*F|T/F
C----C|C
L----Q|L&&Q|L||Q
Q----i|(E)|!Q
2.遞歸下降程序流程圖
對應于每個文法編寫如下遞歸下降子程序
主程序(B)[在此處鍵入] [在此處鍵入]
3.4 符號表模塊
3.4.1功能
進行符號表的儲存,添加,更新,查找,保存標識符活躍信息以及輸出。3.4.2 數據結構
在此處鍵入]
3.4.3算法
3.5 四元式模塊
3.5.1功能
四元式為中間代碼,編譯程序進行完語義分析后,先生成中間代碼作為過渡,此時中間代碼與目標代碼已經比較相似
3.5.2 數據結構
[ 在此處鍵入]
3.5.3算法
3.6語義動作分析模塊
3.6.1功能
在語法分析中嵌入相應的語義動作,生成四元式 3.6.2 數據結構
[
[在此處鍵入]
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 錯誤處理模塊
3.7.1功能 保存運行時發現的錯誤,儲存行號已經詳細信息并輸出。
3.7.2 數據結構
3.7.3算法 [在此處鍵入]
public static void AddErrorMessage(int lineno,string content)函數用作在發現錯誤時保存錯誤信息以及行號。
public static string PrintErrorList()把所有發現的錯誤格式化后統一輸出。
錯誤信息在語法分析,語義分析,符號表檢錯中添加。3.8 目標代碼模塊
3.8.1功能
目標代碼生成把優化后的中間代碼變換成目標代碼,此處的目標代碼為匯編代碼,采用單寄存器生成目標代碼 3.8.2 數據結構[在此處鍵入]
3.8.3算法
對于一個基本塊有如下流程圖
W:操作符,B:第一操作數,C:第二操作數,R:寄存器
5.結論
網上找一段話抄上 [在此處鍵入]
6.測試
測試打開文件
測試保存文件
如果沒打開文件,直接敲代碼,點保存時會彈出另存為窗口[在此處鍵入]
測試錯誤檢測,程序缺少main函數的類型,錯誤列表中顯示第一行函數缺少錯誤類型。
測試錯誤檢測,程序缺少分號,錯誤列表中顯示該行缺少語句結束標志';' 單擊錯誤列表,會自動選定錯誤行
編譯成功,生成并顯示token串、符號表、四元式與目標代碼 [在此處鍵入]
測試if與while語句,而且while嵌套在if當中
測試goto語句,結果正確。[在此處鍵入]
測試優化,輸入課件中的代碼,結果與課件一樣
6.參考文獻。
1、陳火旺.《程序設計語言編譯原理》(第3版).北京:國防工業出版社.2000.2、美 Alfred V.Aho Ravi Sethi Jeffrey D.Ullman著.李建中,姜守旭譯.《編譯原理》.24 [在此處鍵入]
北京:機械工業出版社.2003.3、美 Kenneth C.Louden著.馮博琴等譯.《編譯原理及實踐》.北京:機械工業出版社.2002.4、金成植著.《編譯程序構造原理和實現技術》.北京:高等教育出版社.2002.7.收獲、體會和建議。
直接拷貝好歹也檢查一下錯誤
對于編譯原理的這次課程設計,自己經歷了從剛開始的不懂?明白任務的要求和內容?理論知識的了解?開始著手寫代碼?完成基本功能?根據DFA及自頂向下等理論修改完善代碼等這些過程。
自己著手寫詞法分析的時候還不清楚詞法分析的任務內容,還不知道詞法分析的結果是什么,詞法分析出錯的情況和類型有哪些,也總是將詞法分析和語法分析混在一起,不明白哪些錯誤在詞法分析中報,哪些錯誤在語法分析中判斷,后來經過查書、網上資料、請教同學等途徑逐步清晰了詞法分析的工作內容是從源代碼文件中獲取出Token,供語法分析使用。在充分了解了語法分析需要哪些信息時,我才真正了解了詞法分析的工作內容和目標,才知道詞法分析需要完成哪些任務獲取到哪些信息。充分了解了詞法分析的任務之后,就開始理論知識的學習。經過揣摩書上的例子,自己理解和掌握了怎么設計過濾注釋和分析程序中Token的DFA,于是開始根據設計好的DFA進行編碼,最后經過調試已經可以正確地完成詞法階段的任務了。這只是詞法分析的原始代碼,在之后還進行了兩次徹底的改動。雖然之前寫的詞法分析的代碼已經完成了詞法分析的需求,也是根據DFA的原理編寫的,但是在代碼結構上卻難以體現,在對書上的根據已知DFA寫代碼的例子進行了詳細的研究之后,發現自己的代碼并沒有像書上那樣完全按照所依據的DFA各狀態轉移的關系進行編寫,所以對代碼進行了重寫,像書上一樣嚴格按照狀態之間轉移的方式進行編寫,將狀態劃分成11個狀態,狀態分別按1~11進行標注,程序也按照DFA來編寫,也實現了詞法分析的功能。再后來寫報告的時候,發現分析出Token的那個DFA并不是最簡的,有很多多余的狀態,完全可以用一個flag標志來標識,從而簡化代碼結構,于是又重寫了一次詞法分析函數scan()的代碼,將狀態縮減為5個,且不再用1-5來表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時為了簡化代碼將輸出Token到文件的部分從scan()中剝離開來,而在Lexical類中加了一個printToken()的函數,使scan()函數邏輯更加清晰,使讀者能夠容易地將代碼與DFA進行查看比照。
在寫語法分析的時候,已經對編譯器的語法分析的內容有了一定的了解,所以直接進行了理論的學習。首先自己對遞歸向下分析法進行了學習,將書上的幾個遞歸向下分析的偽代碼看過之后,自己對遞歸向下的分析方法的原理有了初步的認識,大概知道了根據文法怎么分析,但是對于如何編寫代碼卻還在此處鍵入]
是難以下手,于是就對照TINY語言的文法看了幾遍書后面的TINY語言的遞歸向下分析的語法分析程序,這樣就基本知道了C-語言的語法分析程序怎么寫。由于C-語言給出的文法有左遞歸存在,于是自己將存在左遞歸的文法改寫成EBNF的形式,并據此進行代碼編寫。由于在編寫代碼的過程中需要確定分析是否正確或選擇多個文法中的某一個文法進行分析,有時必須探測需要的或下一個Token的類型,在這種情況下需要求First集合,在推導中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據求出的First集合和Follow集合進行判斷,以確定程序的走向。在編寫過程中,還有一類問題,就是存在公共左因子,如文法expression→ var = expression | simple-expression,左因子為ID,在分析過程中,由于已經取出了一個ID的Token,且生成了一個IdK的節點,但是在當前狀態無法確定是哪一個推導,然而IdK節點已經生成,又無法回退,并且是使用自頂向下的分析方法,已經生成的IdK在程序上方無法使用,自己通過查閱資料等途徑的學習確定了在這種情形下的處理方式:將已經生成的IdK節點傳到下方的處理程序,所以TreeNode * simple_expression(TreeNode * k)、TreeNode * additive_expression(TreeNode * k)等函數都被設計成有節點類型參數的函數,目的就是將已經生成的節點傳到下面的分析函數中去。
通過這次的編譯原理課程的學習和實踐,自己獲益良多。首先最基本的成果是完成了課程設計的任務,實現了編譯器的詞法分析和語法分析階段的功能,詞法分析主要能過濾注釋、分析出語法分析階段需要的Token并滿足語法階段的所有要求,能夠判別詞法分析階段是否出錯和出錯類型和位置。語法分析主要能根據遞歸向下的分析思想和C-文法對詞法分析獲取的Token進行語法分析,能夠構造出語法樹,能夠判別語法分析過程中是否出錯以及出錯位置和錯誤類型。
由于在編寫程序過程中,涉及到了正則表達式、DFA、提取公共左因子、消除左遞歸、EBNF、求First集合和Follow集合、遞歸向下分析方法以及編程語言方面的知識,所以,通過本次的課程設計的實踐,使得自己對編譯原理這門課的許多知識點有了更加深刻和具體的理解,而不再只限制于做題。此外,對以前那些已掌握的知識有了溫習和動手鍛煉的機會。如:以前在編譯原理課上雖然知道First集合和Follow集合怎么求的,卻不知道First集合和Follow集合到底是干什么的,通過編寫程序自己明白了他們的實際作用,使得自己不僅知其然還知其所以然,從而使得自己加深了對知識點的理解和掌握。由于以前編寫代碼都是使用JAVA語言,所以C/C++很多內容都忘記了,通過本次的實踐,自己又重新拾起了以前的知識。此外,由于在做報告的時候,需要描繪DFA和程序流程圖,使得自己初步掌握了使用visio和word畫圖的能力。此外,對于文檔的編寫和美化自己也獲得了許多有用的經驗。[
第四篇:編譯原理課程設計學習心得體會
一周的課程設計很快過去,總體感覺得做得很不爽。
因為考試的原因,所有想盡快把這個課程設計做完,所以就直接改了老師的程序,以為這樣會快一些,事實證明,確實如此,但是做起來很不順手,程序員更討厭的是看別人的程序。不知道變量的含義,函數的作用。還有就是對vc 不是很熟,不僅開發環境不熟,就連c(其實應該說是c)的一些常用函數都忘得一干凈,就好比字符轉化為整型(atoi)和整型轉化為字符型(itoa)這兩個函數,根本不認識,還是在google上搜索到的資料。
c 確實有很多不完美的地方,我最煩的就是指針,指來指去的很讓人頭疼。還有就有字符串的轉換等一些操作,沒有java來得方便。如果自己獨立編寫代碼的話,我會首先考慮用java,其次考慮用c#,最后才用c。
至于用什么asp,jsp來做,我也可以做,這些動態網頁語 言都接觸過,只可惜自己技不如人,不能在兩天的時間內,把程序編出來,只能用最快的方法,用現成的改。因考慮到編譯是一門考研科目,所以自己打算在考試結束以后再完完整整地做一個。
總的來說,課程設計加深了自己對編譯這門課的理解,發現自己還有很多的地方要復習,甚至還有知識點的理解偏差。一定在考試把所有的漏動填平。
xiexiebang.com范文網(FANWEN.CHAZIDIAN.COM)
第五篇:2016編譯原理課程設計心得體會 2篇
2016編譯原理課程設計心得體會 2篇
經過一個星期的編譯原理課程設計,本人在劉貞老師的指導下,順利完成該課程設計。通過該課程設計,收獲頗多。
一、對實驗原理有更深的理解
通過該課程設計,掌握了什么是編譯程序,編譯程序工作的基本過程及其各階段的基本任務,熟悉了編譯程序總流程框圖,了解了編譯程序的生成過程、構造工具及其相關的技術對課本上的知識有了更深的理解,課本上的知識師機械的,表面的找范文就來。通過把該算法的內容,算法的執行順序在計算機上實現,把原來以為很深奧的書本知識變的更為簡單,對實驗原理有更深的理解。
二、對該理論在實踐中的應用有深刻的理解
通過把該算法的內容,算法的執行順序在計算機上實現,知道和理解了該理論在計算機中是怎樣執行的,對該理論在實踐中的應用有深刻的理解。
三、激發了學習的積極性
通過該課程設計,全面系統的理解了編譯原理程序構造的一般原理和基本實現方法。把死板的課本知識變得生動有趣,激發了學習的積極性。把學過的計算機編譯原理的知識強化,能夠把課堂上學的知識通過自己設計的程序表示出來,加深了對理論知識的理解。以前對與計算機操
作系統的認識是模糊的,概念上的,現在通過自己動手做實驗,從實踐上認識了操作系統是如何處理命令的,如何協調計算機內部各個部件運行,對計算機編譯原理的認識更加深刻。課程設計中程序比較復雜,在調試時應該仔細,在程序調試時,注意指針,將不必要的命令去除。
在這次課程設計中,我就是按照實驗指導的思想來完成。加深了理解文件系統的內部功能及內部實現,培養實踐動手能力和程序開發能力的目的。
四、理解了該知識點以及學科之間的融合滲透
本次課程設計程序部分是用c語言編寫的,把《計算機操作系統》,《編譯原理》,《算法分析與設計》《c語言》四門學科聯系起來,把各個學科之間的知識融合起來,把各門課程的知識聯系起來,對計算機整體的認識更加深刻。使我加深了對《計算機操作系統》,《編譯原理》,《算法分析與設計》《c語言》四門課程的認識。2篇編譯原理的編譯過程一般包括:詞法分析、語法分析、語義分析與中間代碼產生、優化、目標代碼生成五個階段。通過本次設計,使我對編譯原理有了進一步的了解,更加鞏固了所學習的知識。我所選擇的題目是《LL(1)文法的編譯器自動生成器的生成與實現》,這是在語法分析階段。語法分析的主要任務就是:在詞法分析的基礎上,根據語言的語法規則,把單詞符號串分解成各類語法單位。通過語法分析,確定整個輸入串是否構成語法上正確的“程序。”對此,我查找資料設計出一個簡單的程序。輸入字符串,進行簡單的分析。編譯原理是一門比較抽象的課程,也比較難以學得透。從一開始孫老師就對我們說,這個課程,如果你不認真去學,你就學不懂;如果你想不聽課,然后自學的話,你肯定會花比人家多很多的時間。確實是這樣,現在課程找范文就來WWW.downhot.com已經結束了,我慶幸當初聽老師的話,比較認真地去聽課。即使如此,還是有很多東西很模糊的。但至少對編譯這個概念有一定的了解。如果要成為一名優秀的軟件開發工作者,則這門課程必不可少。它是軟件工程的基礎,學好它,對軟件的設計有很大的幫助。通過本次的設計,我更加體會到這一點。剛開始設計的時候,我根本就找不著路。平時的實驗老師都有給出部分代碼或者代碼,而這次,卻是要自己通過學習來完成。我們學過C和C++程序設計語言,理所當然會想到使用這兩種語言之一來實現。我選擇了C++,因為這個學期也在學習,剛好可以通過課程設計再次鞏固。在網上找了一些資料,也參考過別人所寫的代碼,慢慢開始寫......剛好期末考試,也就寫寫停停,拖了比較長時間。無論如何,當初只是在想,只要我有得交就是了。后來寫著寫著,來感覺了,就覺得,其實學習也是一件挺有趣的事。特別是當自己的代碼能運行的時候,那種心情真的特興奮。盡管代碼并不完善,并且會有錯誤,不過,今后我會再次努力學習,然后把它做得更好。