當前位置:學問谷 >

行政範例 >工作彙報 >

編譯原理語法分析上機實驗讀書工程彙報

編譯原理語法分析上機實驗讀書工程彙報

一、開發環境簡介

編譯原理語法分析上機實驗讀書工程彙報

此次編譯原理課程設計的編譯器的實現是基於VC++6.0編譯環境下實現的。

對於VC++6.0,它是Microsoft公司推出的開發Win32環境程序,面向對象的可視化集成編程系統。它不僅具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發多種程序等優點。

VC++6.0不僅是一個C++ 編譯器,而且是一個基於Windows操作系統的可視化集成開發環境。Visual C++6.0明顯縮短程式編輯、編譯及連結花費的時間,在大型軟件計劃上尤其顯著。

二、基本理論闡述、當前理論

1.什麼是編譯程序

語言翻譯程序把一種語言(稱作源語言)書寫的程序翻譯成另一種語言(稱作目標語言)的等價程序。

2.高級語言程序的處理過程

3.編譯過程

三、小型編譯器系統架構(最重要)

1).詞法分析:

詞法分析是編譯過程的第一個階段。這個階段的任務是從左到右一個字符一個字符地讀入源程序,對構成源程序的字符流進行掃描和分解,從而識別出一個個單詞(也稱單詞符號或符號)。這裏所謂的單詞是指邏輯上緊密相連的一組字符,這些字符具有集體含義。比如標識符是由字母字符開頭,後跟字母、數字字符的字符序列組成的一種單詞。保留字(關鍵字或基本字)是一種單詞,此外還有算符、界符等等。

2).語法分析:

語法分析是編譯過程的第二過程。語法分析的任務是在詞法分析的基礎上將單詞序列分解成各類語法短語;如“程序”、“語句”、“表達式”等。一般這種語法短語,也稱語法單位,可表示成語法樹。

詞法分析和語法分析本質上都是對源程序的結構進行分析。但詞法分析的

任務僅對源程序進行線性掃描即可完成,比如識別標識符,因為標識符的結構是字母打頭的字母和數字串,這隻要順序掃描輸入流,遇到既不是字母又不是數字字符時,將前面所發現的所有字母和數字組合在一起而構成單詞標識符。但這種線性掃描則不能用於識別遞歸定義的語法成分,比如就不能用此辦法去匹配表達式中的括號。

目前,已存在許多語法分析的方法。但就產生語法樹的方向而言,可大致把他們分為自底向上和自頂向下兩大類。

3)中間代碼生成:

在進行了上述的語法分析和語義分析階段的工作之後,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間代碼。所謂“中間代碼”是一種結構簡單、含義明確的記號系統可以設計為多種多樣的形式,重要的設計原則為兩點:一是容易生成;二是容易將它翻譯成目標代碼。很多編譯程序採用了一種近似‘三地址指令’的“四元式”中間代碼,這種四元式的形式為:(運算符,運算對象1,運算對象2,結果);

4).目標代碼生成:

這一階段的任務是把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令或彙編指令代碼。這是編譯的最後階段,它的工作與硬件系統結構和指令含義有關,這個階段的'工作很複雜,涉及到硬件系統功能部件的應用、機器指令的選擇、各種數據類型變量的存儲空間分配以及寄存器和後援寄存器的調度等。

此外,本程序不涉及語義分析,代碼優化等代碼優化階段。

本次課程設計設計出的小型編譯器,適用範圍比較小,侷限性較高,綜合度不算強。語言不是很嚴謹,有待改進。

四、小型編譯器主要功能模塊與實現

第一部分:語法分析程序;

(1).功能介紹

輸入LL(1)文法的字符串,LL(1)程序可以分析其匹配過程。輸入一個字符串,算符優先程序可以分析其規約移進的過程。

(2).相關理論

語法分析對輸入串的處理(進棧與出棧,歸約和接受)是獨立於語法分析之外單獨的一部分,但是其只能分析有限的輸入串,無法完全任意識別。 相關理論

將表達式文法的預測分析表用二維數組儲存,然後當分析符號串依次掃描符號串中的字符,進行匹配輸出即可。

(3)程序流程圖

LL(1)模擬程序實現流程:

  • 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flxz/huibao/7ylowy.html