編譯器構造工具的作用是什麼?


編譯器是一種計算機程式,它將用計算機語言(源語言)編寫的原始碼轉換為另一種計算機語言(目標語言,提供具有稱為目的碼的二進位制形式)。轉換原始碼以建立可執行程式碼是不充分的最佳理由。

編譯器通常用於將原始碼從高階程式語言翻譯成低階語言(例如,組合語言或機器程式碼)的程式。將低階語言翻譯成高階語言的程式稱為反編譯器。

將高階語言之間進行翻譯的程式通常稱為語言翻譯器、源到源翻譯器或語言轉換器。語言重寫器通常是一個程式,它在不改變語言的情況下翻譯表示式的形式。編譯器可能實現以下某些或所有操作,例如詞法分析、預處理、解析、語義分析、程式碼生成和程式碼最佳化。

已經開發了許多型別的軟體工具來建立編譯器的一個或多個階段。這些工具稱為編譯器構造工具。編譯器編寫者使用軟體工具,包括偵錯程式、版本管理器和分析器等。一些通用工具已為特定編譯器元件的自動方案生成。

這些工具使用專門的語言來定義和執行元件,並且可以使用完全完善的演算法。最突出的工具是那些隱藏生成演算法分析並建立可以統一到編譯器其餘部分的元件的工具。以下是幾個有益的編譯器構造工具的列表:

  • **掃描器生成器** - 這些生成器建立詞法分析。基本的詞法分析是由有限自動機生成的,該自動機以正則表示式的形式獲取輸入。

**示例** - LEX 是 UNIX 系統提供的掃描器生成器。

  • **解析器生成器** - 此軟體生成語法分析,該分析以程式語言的語法形式獲取輸入,該語法取決於上下文無關語法。

  • **語法制導翻譯引擎** - 這些引擎建立一組遍歷解析樹的例程。基本概念是,一個或多個翻譯與解析樹的每個節點相關聯,並且每個翻譯都表示為其在樹中相鄰節點處的翻譯。

  • **資料流引擎** - 它可以生成最佳化的程式碼。這些工具用於程式碼最佳化。

  • **自動程式碼生成器** - 這些生成器以中間程式碼的形式獲取輸入,並將其轉換為機器語言。

更新於: 2021年10月23日

8K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.