學了一學期的編譯原理,一開始上課的時候,感覺老師嘴裡的概念明明說的那麼順溜,可是到自己這就卡殼了,讓我想起了乙個梗:要考試了,在複習的時候,開啟書,馬冬梅,恩記住了,合上書,什麼冬梅?開啟書,馬冬梅,合上書,馬什麼梅?歸結起來就是書看的少。複習的時候課件認認真真的看了兩遍,現在來梳理一下這門課。
上邊這張圖就是編譯原理這門課所要學的內容。首先在學習語法分析之前,需要一些儲備知識。比如字元、字串及其運算,語言的概念。描述方法,文法及其有關概念,文法到語言及語言到文法之間的轉換,句子句型的定義,文法的型別及區別,語法樹的定義和構造,語法的二義性,如何根據判斷二義性及消除二義性等。接下來討論詞法分析,詞法分析,說白了就是識別並分類單詞。所以涉及到如何識別單詞和單詞的分類和形式化描述,此時引入正規表示式和正規文法,通過正規式與正規文法的相互轉化引入有限自動機(dfa和nfa)和狀態圖來識別單詞。到這裡就該進行語法分析了,而語法分析又分為自上而下分析的推導和自下而上的規約,自上而下分析需要從開始符起根據產生式一步步推導,此時會因為文法的左遞迴和回溯帶來導致出現死迴圈。所以想辦法消除左遞迴和回溯,從而引入了ll(1)文法,ll(1)文法又牽涉到first集和follow集,而針對ll(1)文法的分析程式的設計又分為兩種方法,設計-遞迴下降分析程式實現語法分析和設計-**分析程實現語法分析,所以ll(1)文法的判斷很重要。而自下而上分析涉及到了短語、最左素短語、控制代碼、規範規約等一些重要概念,自下而上的分析有包括算符優先分析和lr分析法。到這裡語法分析差不多就結束了。語義分析涉及到屬性文法和語法制導翻譯。而中間**產生涉及到了中間**的形式和翻譯。後邊的還沒學到。
編譯原理 總結
一 編譯程式 1 編譯器是一種翻譯程式,它用於將源語言 即用某種程式語言寫成的 程式翻譯為目標語言 即用二進位制數表示的偽機器 寫成的 程式。後者在windows作業系統平台下,其檔案的副檔名通常為.obj。該檔案通常還要經過進一步的連線,生成可執行檔案 機器 寫成的程式,擴充套件名為.exe 通常...
編譯原理總結
從左至右掃瞄字串行,識別出單詞 關鍵字 標示符 常數 特殊符號 按照語言語法的規則,將詞法分析所得的單詞分解為各個語法成分。分析單詞串是否構成短語和句子 源程式進行上下文有關性質的檢查,看源程式有無語義錯誤。例如 變數是否定義 型別是否正確 含義明確 便於處理的記號系統。這種記號系統於源程式和機器語...
編譯原理 總結
一 編譯程式 1 編譯器是一種翻譯程式,它用於將源語言 即用某種程式語言寫成的 程式翻譯為目標語言 即用二進位制數表示的偽機器 寫成的 程式。後者在windows作業系統平台下,其檔案的副檔名通常為.obj。該檔案通常還要經過進一步的連線,生成可執行檔案 機器 寫成的程式,擴充套件名為.exe 通常...