編譯原理分為
1. 編譯原理
編譯原理):利用編譯程序從源語言編寫的源程序產生目標程序的過程; 用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成

(1)編譯原理分為擴展閱讀:
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。
編譯程序的語法規則可用上下文無關文法來刻畫。語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。
而自下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。
2. 編譯原理就是一個工具嘛
1.編譯原理實際上是傳統編譯器的工作原理。所以他可以說是一種工具所具備的原理。它可以分為六個部分:詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成。整個過程其實就像把一篇英語文章翻譯成中文,起到翻譯出讓人能夠看懂的東西。
2.語法分析和詞法分析基本相似但又不盡相同,詞法分析輸入的是字元,也是平常所說的源代碼,而語法分析輸入的則是字元流,是字元下面進行的一系列流程,講這些所翻譯過來的,最後再進行編排得到可以令人們看得懂的語句。
3. 編譯原理主要數據結構
編譯原理主要涉及以下主要數據結構:
記號:
- 在詞法分析階段,掃描程序將源代碼字元轉換為符號,這些符號通常作為枚舉數據類型的值。
- 記號可能包含字元串信息或標識符相關的額外數據。
語法樹:
- 語法分析階段生成,以指針形式表示的動態分配結構。
- 存儲為指向根節點的單個變數,節點記錄由分析和語義分析程序收集的信息,如表達式數據類型。
符號表:
- 存儲標識符及其相關信息,如函數、變數、常量和數據類型。
- 與編譯器各階段頻繁交互,對性能有高要求,通常使用散列表實現。
常數表:
- 存儲程序中使用的常數和字元串。
- 插入和查找速度至關重要,常數不需刪除,因為它們只出現一次,有助於節省存儲空間。
中間代碼:
- 編譯器生成的介於源代碼和目標代碼之間的表示形式。
- 可以是數組、文本文件或連接列表,類型根據優化需求不同。
臨時文件:
- 在編譯過程中用於保存中間結果的文件。
- 早期編譯器中常用,現代編譯器中更多地用於存儲整個編譯單元,在處理地址反填等問題時必不可少。
4. 編譯過程分為哪幾個階段各階段的遵循的原則、識別機構、使用的文法編譯原理
編譯原理中的遍概念
編譯階段也常常劃分為兩大步驟,分析步驟和綜合步驟 分析步驟和綜合步驟 分析步驟是指對源程序的分析 -線性分析(詞法分析或掃描) -層次分析(語法分析) -語義分析 綜合步驟是指後端的工作,為目標程序的生成而進行的綜合
你分析過嗎?若按照這種組合方式實現編譯程序,可以設想,某一編譯程序的前端加上相應不同的後 端則可以為不同的機器構成同一個源語言的編譯程序。也可以設想,不同語言編譯的前端生成同一種中間 語言,再使用一個共同的後端,則可為同一機器生成幾個語言的編譯程序。
一個編譯過程可由一遍、兩遍或多遍完成。所謂"遍",也稱作"趟",是對源程序或其等價的中間語言程 序從頭到尾掃視並完成規定任務的過程。每一遍掃視可完成上述一個階段或多個階段的工作。例如一遍可 以只完成詞法分析工作;一遍完成詞法分析和語法分析工作;甚至一遍完成整個編譯工作。對於多遍的編 譯程序,第一遍的輸入是用戶書寫的源程序,最後一遍的輸出是目標語言程序,其餘是上一遍的輸出為下 一遍的輸入。
在實際的編譯系統的設計中,編譯的幾個階段的工作究竟應該怎樣組合,即編譯程序究竟分成幾遍, 參考的因素主要是源語言和機器(目標機)的特徵。比如源語言的結構直接影響編譯的遍的劃分;像 PL/1 或 ALGOL 68 那樣的語言,允許名字的說明出現在名字的使用之後,那麼在看到名字之前是不便為包含該名 字的表達式生成代碼的,這種語言的編譯程序至少分成兩遍才容易生成代碼。另外機器的情況,即編譯程 序工作的環境也影響編譯程序的遍數的劃分。遍數多一點,整個編譯程序的邏輯結構可能清晰些,但遍數 多即意味著增加讀寫中間文件的次數,勢必消耗較多時間,一般會比一遍的編譯要慢。
5. 編譯原理第2版圖書目錄
《編譯原理第2版》圖書目錄概覽:
第1章 內容概述
- 定義編譯程序:介紹編譯程序的概念,即如何將源代碼轉化為機器可執行代碼的過程。
- 編譯過程分階段:概述編譯過程的關鍵階段,包括程序設計語言的結構分析。
- 解釋程序與軟體工具:解釋解釋程序作為輔助工具的作用,以及處理源代碼的軟體工具的功能。
- 程序設計語言范型:討論不同編程語言的特點和適用性,為PL/0編程提供理論基礎。
- PL/0編程實踐:通過實現PL/0編程程序來深入理解編譯原理,包括語言描述。
第2章 編譯程序的結構
- 詞法分析:詳細剖析詞法分析階段的任務和方法。
- 語法語義分析:深入探討語法分析和語義分析的核心內容。
- 目標代碼生成:介紹目標代碼的結構和生成方法,這是編譯過程的直接體現。
- 錯誤處理:闡述編譯過程中的錯誤處理策略和機制。
- 存儲分配:解釋執行時存儲分配的重要性和實現方法。
請注意,以上僅為圖書目錄的概覽,具體內容可能因版本和出版社的不同而有所差異。如需更詳細的信息,建議直接查閱《編譯原理第2版》的實體書或電子版。
