編譯原理1----編譯原理的基本概念


編譯程序:把一種語言(源語言===高級語言)轉換成另一種語言(目標語言===低級語言(匯編或者機器語言))的程序。

詞法分析:對輸入的字符串進行掃描和分解,識別出一個個單詞及其類型;(輸入是字符串,輸出是<單詞的種類標示符,單詞的值>)

語法分析:對輸入的字符串進行語法單位的識別,判斷他是一個賦值語句還是一個表達式(輸入是程序串,輸出是是否是合法的語法單位)

語義分析與中間代碼的產生:對輸入的程序串進行語法的檢查,並且合法的話進行初步的翻譯。(輸入是語法單位,輸出是翻譯的初步代碼)

優化器:對於初步翻譯得到的代碼進行再次的掃描和翻譯,去掉冗余。(輸入是初步的翻譯結果,輸出是優化后的代碼)

目標代碼生成器:對於優化后的代碼進行再次翻譯,生成符合機器的最終代碼。(輸入是優化后的代碼,輸出是符合機器的目標代碼)

表格和表格管理:每個階段都會有相應的表格記錄各類信息以及編譯的進展狀況。

出錯處理:當編譯的過程中有錯誤出現的時候應當有報錯處理,具體的地點,原因,並且使得范圍盡量的小,使源程序的其余部分繼續執行。

 

遍:就是對源程序或者源程序的中間結果進行從頭到尾的掃描依次,並且作出相應的處理,生成新的中間結果或者目標程序。次法分析相當於一遍,語法分析相當於一遍,但是詞法、語法可以合為一遍,根據自身的內存情況而定。內存大的時候可以少幾遍。因為遍數多了也是會浪費輸入輸出時間的。

閉包:V^n=VVVVV....V     規定V^0={e}(這里的e就是空的意思)。

V*=V^0UV^1UV^2...(其中V*是V的閉包)相當於你從0到n都被我承包了。

文法:定義一組的規則產生式的集合,如:G:

E->i

E->E+E

E->E*E

E->(E)

稱為文法。其中的每一條即為產生式。

一組產生式是一個四元式(VT,VN,S,p),終結符號,非終結符號,開始符號,一組產生式。

句型:由開始符號推導出的一個串是句型,如:s-*>a;a是一個句型,如果a中只含終結符,a為句子。E->E*E中E*E是一個句型,E->i中i也是一個句型,同時也是一個句子。E的所有句子是一個語言。

語法樹:句型的推導過程就是一顆語法樹。

二義性:是指對於一種推導有多中不同的結果,而不是分別最左推導和最右推導有不同的結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM