2K+ 次瀏覽
喬姆斯基層次結構是各種形式語法的集合。利用這種形式語法,可以生成一些形式語言。它們可以透過多種型別的裝置來定義,這些裝置可以識別這些語言,例如有限狀態自動機、下推自動機、線性有界自動機和圖靈機等。喬姆斯基提出了以下四種不同的短語結構語法類別:0型語法(無限制語法) - 0型語法的構建對替換規則沒有限制。左側字串中必須出現非終結符。生成的語言稱為遞迴可列舉語言。因此,0型語法是……閱讀更多
10K+ 次瀏覽
程式元素與特定特徵或屬性的繫結是從一組可能的屬性中選擇屬性。在程式組織或處理過程中做出此選擇的時間被定義為該元素該屬性的繫結時間。程式語言中有多種繫結,以及多種繫結時間。它還可以涉及繫結和繫結時間的術語中,這些術語是根據語言的定義或其執行而恆定的程式元素的屬性。繫結時間型別有兩種型別……閱讀更多
1K+ 次瀏覽
程式設計環境通常在兩個主要方面影響語言設計,例如促程序序從元件的單獨編譯和組裝的特性,以及輔助程式測試和除錯的特性。單獨編譯 - 在任何大型程式的結構中,通常希望有多個程式設計師或程式設計組設計、編寫和測試程式的元素,然後再將所有元素最終組裝成一個完整的程式。這需要語言具有結構,以便可以單獨編譯和實現單個子程式或其他元素,而無需其他元素,然後可以組合……閱讀更多
17K+ 次瀏覽
型別轉換是一種操作,它採用一種型別的資料物件並建立多種型別的等效資料物件。型別轉換操作的簽名如下所示:轉換_op:type1→type2 有兩種型別的型別轉換,如下所示:隱式型別轉換(強制轉換) - 啟用混合模式表示式的程式語言應該描述隱式運算元型別轉換的約定。強制轉換定義為型別之間的自動轉換。例如,在 Pascal 中,如果加法運算的運算元是整數型別和其他實數型別……閱讀更多
5K+ 次瀏覽
型別檢查是提供運算元是相容型別的活動。相容型別是運算元對運算子來說是合法的,或者根據語言規則可以由編譯器生成的程式碼隱式修改為合法型別。這種自動轉換稱為強制轉換。型別錯誤是對不正確型別運算元的運算子的應用。它可以說明型別檢查的概念,考慮以下語句:c:=a + 3 * b;此處 b 應為允許乘以整數的型別。同樣,……閱讀更多
380 次瀏覽
定義它識別與變數、函式、類等的名稱相關的程式碼或資料。編譯器基本上需要定義來指定為已宣告的實體分配儲存區域。當定義變數時,它具有包含該變數的多個位元組的記憶體量。函式定義生成函式的程式碼。它只能在一個程式中定義一個程式元素一次,因為定義是程式元素的唯一要求。宣告和定義之間的關係可以是一對多。宣告它可以確定程式的名稱,包括……閱讀更多
3K+ 次瀏覽
在生成彙編/機器程式碼之前,可以多次處理整個源程式。遍 - 對源程式的一次完整掃描或處理。各個階段可以安排成一個遍。詞法、語法和語義分析通常組合在一個遍中。每個遍都讀取源程式並將輸出寫入中間檔案,然後後續遍可以讀取該檔案,即一個遍的輸出將成為下一個遍的輸入。單遍編譯器 - 在單遍編譯器中,當處理一行原始碼時,它會被掃描並提取標記。然後……閱讀更多
9K+ 次瀏覽
解決方案 符號表 序號 變數名 變數型別 200 A 浮點型 204 B 浮點型 208 C 浮點型 現在,我們將看到如何在每個級別執行編譯階段以及它是如何工作的。詞法分析這是作為編譯器和源語言程式碼之間整合工作的第一步。它一次讀取原始碼一個字元,並將原始碼設計成一系列稱為標記的原子單元。在此階段,我們將看到如何標記表示式。A → 識別符號:(id, 1) = → 運算子:賦值 B → 識別符號:(id, 2) * → 運算子:乘法 C → 識別符號:……閱讀更多
24K+ 次瀏覽
翻譯器是一種程式語言處理器,它將計算機程式從一種語言修改為另一種語言。它採用用源程式編寫的程式,並將其修改為機器程式。它可以在翻譯過程中查詢和檢測錯誤。翻譯器有各種型別,如下所示:編譯器 - 編譯器是一個程式,它將高階語言(例如 C、C++ 和 Java)轉換為低階語言(目標程式或機器程式)。編譯器使用各個階段將高階語言轉換為低階語言。客戶輸入的字元流經過……閱讀更多
程式中的宣告是指向程式語言翻譯器提供資料物件名稱和資料型別資訊的語句。例如,考慮以下 C 語言宣告:int a, b; 此宣告向程式語言翻譯器提供資訊,表明 a 和 b 是子程式執行期間所需的整型資料物件。宣告還定義了在資料物件生命週期內資料物件與名稱 a 和 b 的繫結。宣告的目的宣告的各種目的是:型別檢查 - 宣告允許……閱讀更多