4K+ 瀏覽量
自動機是數字計算機的抽象模型,具有離散的輸入和輸出。每個自動機都包含一個讀取輸入的機制。可以認為輸入是在給定字母表上的字串,寫在一個自動機可以讀取的輸入檔案中。輸入檔案被分成更小的部分,稱為單元格。它是一種語言的機器或識別器,用於檢查語言是否接受字串。在有限自動機中,“有限”表示有限數量的狀態,“自動機”表示無需人工干預即可工作的自動機器…… 閱讀更多
有限自動機接受的語言可以透過稱為正則表示式的簡單表示式簡單地定義。它是一種描述任何語言的有效方法。正則表示式也可以表示為表示字串的一系列模式。正則表示式用於連線字串中的字元序列。字串搜尋演算法使用此模式來發現字串上的操作。正則表示式有各種規則,如下所示:ε 是正則表示式。兩個正則表示式 R1 和 R2 的並集,即 R1 + R2 或 R1|R2 也是正則表示式。兩個正則表示式的連線…… 閱讀更多
12K+ 瀏覽量
詞法分析可以使用狀態轉換圖來設計。有限自動機(狀態轉換圖)——用於識別標記的有向圖或流程圖。狀態轉換圖有兩個部分:狀態——用圓圈表示。邊——狀態由邊(箭頭)連線。示例——繪製“if”關鍵字的狀態轉換圖。為了識別標記(“if”),詞法分析還必須讀取“f”之後的下一個字元。根據下一個字元,它將判斷是“if”關鍵字還是其他內容。因此,“if”之後的空格確定“If”是一個關鍵字。“*”在最終狀態 3 表示回退,即控制權將再次回到之前的…… 閱讀更多
46K+ 瀏覽量
詞法分析每次都必須訪問輔助儲存器來識別標記。這既費時又費錢。因此,輸入字串儲存在緩衝區中,然後由詞法分析掃描。詞法分析從左到右一次掃描一個字元來識別標記。它使用兩個指標來掃描標記:起始指標 (bptr)——它指向要讀取的字串的開頭。前瞻指標 (lptr)——它向前移動以搜尋標記的結束位置。示例——對於語句 int a, b;兩個指標都從字串的開頭開始,…… 閱讀更多
8K+ 瀏覽量
編譯器是一個計算機程式,它將用計算機語言(源語言)編寫的原始碼轉換為另一種計算機語言(目標語言,提供稱為目的碼的二進位制形式)。轉換原始碼以建立可執行程式碼的主要原因是不充分。編譯器通常用於將程式從高階程式語言翻譯成低階語言(例如,組合語言或機器程式碼)。將低階語言翻譯成高階語言的程式稱為反編譯器。將高階語言之間進行翻譯的程式通常稱為…… 閱讀更多
9K+ 瀏覽量
這是一種建立自編譯編譯器的方法,即用它打算編譯的源程式語言編寫的編譯器。自舉編譯器可以編譯編譯器,因此您可以使用此編譯的編譯器來編譯其他所有內容以及其未來的版本。自舉的用途自舉有各種用途,如下所示:它允許從現有程式語言和編譯器開始開發新的程式語言和編譯器。它允許將新功能與程式語言及其編譯器相結合。它還允許向編譯器新增新的最佳化。它允許語言和…… 閱讀更多
2K+ 瀏覽量
宏處理器許多組合語言都支援“宏”功能,其中宏語句將在轉換為機器程式之前轉換為一系列組合語言語句以及可能的其他宏語句。因此,宏功能是一種文字替換功能。它可以說明宏的實用性,考慮一種機器沒有單個機器或組合語言語句可以將一個記憶體地址的內容新增到另一個記憶體地址作為假設的彙編指令 ADD X, Y 的情況。相反,假設機器有一個指令 LOAD,它將資料從記憶體移動到暫存器,一個指令…… 閱讀更多
5K+ 瀏覽量
檢測和報告源程式中的錯誤是編譯器的主要功能。錯誤可能發生在編譯的任何階段。一個好的編譯器必須準確地確定程式中錯誤發生的行號。可能在編譯的不同級別發生的各種錯誤如下所示:首先是詞法(掃描器)錯誤——這裡一些最常見的型別包括非法或無法識別的字元,主要由輸入錯誤引起。程式設計師鍵入一個不屬於該字元集的字元是導致這種情況發生的一種常見方式…… 閱讀更多
3K+ 瀏覽量
命令式語言命令式語言是指透過狀態變化來促進計算的語言。狀態是指計算機隨機存取儲存器 (RAM) 或儲存器的狀態。將計算機記憶體視為一系列快照會有所幫助,每個快照都在特定時間捕獲所有記憶體單元中的值。每個快照都記錄一個狀態。當輸入程式時,相關資料以某種狀態存在,例如離線的未排序列表。程式設計師的工作是指定一系列對儲存區的更改,這些更改將產生所需的最終狀態,可能是…… 閱讀更多
過程式語言過程式語言是命令驅動的或語句導向的語言。程式包含一系列語句,每個語句的執行都會導致直譯器修改其記憶體中一個或多個區域的值,從而進入一個新的狀態。過程式語言的格式是statement1;statement2;C、Pascal、FORTRAN 及等效語言是過程式語言。語言中的每個語句都指示計算機執行某些操作。過程式語言中的程式是指令列表。對於非常小的程式,不需要其他排列原則。這種語言包括一系列在被呼叫時執行的過程。每個過程都包含…… 閱讀更多