基本概念
詞法分析
-
經過詞法分析器識別出Token,把字串轉化為一個個Token。
Token包括:關鍵字、識別符號、界符等
語法分析
-
把Token串轉換成體現語法規則的抽象樹(AST)
語義分析
-
審查源程式有無語義錯誤
-
找到變數的作用域
-
識別執行的運算方式
-
進行型別的檢查
EBNF
第一章習題
-
什麼是編譯程式?為什麼需要編譯程式?
-
編譯原理課程的主要內容是什麼?
-
編譯過程典型地被劃分成哪幾個階段?各階段的主要任務是什麼?
-
編譯前端和後端各有什麼特點?各自包含編譯過程的哪幾個部分?
-
貫穿編譯過程的兩個工作是什麼?各自的主要任務是什麼?
答案:
-
- 從功能上看,一個編譯程式就是一個語言翻譯程式,是一個能把一種語言書寫的程式翻譯成另一種語言的等價程式
- 一個編譯程式的重要性體現在它是的多數計算機使用者不必考慮與機器有關的繁瑣細節,使得程式設計師和程式設計專家獨立於機器。 -
- 介紹程式設計語言編譯程式構造的一般原理、基本設計方法和主要實現技術。
-
- 詞法分析程式:輸入源程式,拼單詞,檢查單詞和分析單詞,輸出單詞的機內表達形式。
- 語法分析程式:在詞法分析的基礎上,將單片語成各類語法短語並分析能否構成正確程式。
- 語義分析程式:對語法分析所形成的各類短語分析其含義,進行語義審查。
- 中間程式碼生成程式:按照語義規則,將語法分析程式分析出的語法單位轉換成一定形式的中間語言程式碼,如三元式或四元式。
- 中間程式碼最佳化程式:為了產生高質量的目的碼,對中間程式碼進行加工最佳化處理。
- 表格管理程式:負責建立,填寫,查詢等一系列表格管理工作。
- 出錯處理程式:處理和校正源程式中存在的語法、語義、詞法錯誤。 -
- 1. 前端的工作主要依賴於源語言而與目標機無關。前端包括詞法分析、語法分析、語義分析和中間程式碼生成,也包含某些最佳化工作。
- 2. 後端指的是那些依賴於目標機而一般不依賴於源語言,至於中間程式碼有關的那些階段的工作,即目的碼生成,以及相關出錯處理和符號表操作 -
錯誤的診察處理和符號表管理
- 錯誤的診查處理: 編譯過程中發現源程式有錯誤,編譯程式應報告錯誤的性質和錯誤發生的地點,並將錯誤所造成的影響限制在儘可能小的範圍內,使得源程式的其餘部分能繼續被編譯下去。
- 符號表管理:編譯過程中源程式的各種資訊被保留在種種不同的表格裡,編譯各階段的工作都涉及構造、查詢或更新有關的表格。