階段vs傳入編譯器
一般來說,編譯器是一種計算機程序,它讀取用一種語言編寫的程序(稱為源語言),並將其翻譯成另一種語言(即目標語言)。傳統的源語言是C++等高級語言,目標語言是彙編語言等低級語言。因此,一般來說,編譯器可以看作是從一種語言翻譯到另一種語言的翻譯人員。Pass和Phase是編譯器經常使用的兩個術語。編譯器的傳遞次數是編譯器經過源代碼(或它的某種形式的表示)的次數。為了便於構造,編譯器被分解成幾個部分。Phase通常用於調用編譯器中這樣一個獨立的部分。
什麼是編譯器中的傳遞?
對編譯器進行分類的標準方法是按“通過”的數量。通常,編譯是一個相對資源密集型的過程,最初計算機沒有足夠的內存來保存這樣一個完成任務的程序。由於早期計算機硬件資源的侷限性,編譯器被分解成更小的子程序,這些子程序通過檢查源代碼(對源代碼或其他形式的源代碼進行“傳遞”)來完成其部分工作,並分別執行分析、轉換和翻譯任務。因此,根據這種分類,編譯器被識別為一次或多次通過編譯器。
顧名思義,one-pass編譯器在一個過程中編譯。編寫一個單通道編譯器更容易,而且它們的執行速度也比多通道編譯器快。因此,即使在資源受限的時候,語言的設計也使得它們可以一次性編譯(例如Pascal)。另一方面,一個典型的多遍編譯器是由幾個主要階段組成的。第一個階段是掃描器(也稱為詞法分析器)。Scanner讀取程序並將其轉換為一系列標記。第二個階段是解析器。它將中的標記字符串轉換為解析樹(或抽象語法樹),解析樹捕獲程序的語法結構。下一階段是句法結構的語義解釋。代碼優化階段和最終代碼生成階段遵循以下步驟。
編譯器的階段是什麼?
在談到編譯器構造時,經常會出現術語階段。最初,編譯器是由一個人為編譯一種簡單的語言而編寫的單個單片軟件的每一個簡單部分。但是當要翻譯的語言的源代碼變得複雜和龐大時,編譯器就被分解成多個(相對獨立的)階段。具有不同階段的優點是編譯器的開發可以在開發人員團隊中進行。此外,它通過允許階段被改進的階段或添加到編譯器中的附加階段(例如進一步的優化)來改進模塊化和重用。卡內基甜瓜大學的PQCC(Production Quality Compiler Compiler Project)介紹了將編譯分為階段的過程。他們引入了前端、中間端和後端這三個術語。大多數編譯器至少有兩個階段。但是通常,後端和前端封裝了這些階段。
階段編譯器和傳入編譯器的區別是什麼?