找到關於編譯器設計的138 篇文章

影響程式語言實現的因素有哪些?

Ginni
更新於 2021年11月8日 10:52:55

425 次瀏覽

影響程式語言實現的一些因素如下:作用域 - 宣告的作用域是指宣告生效的程式部分。不同語言的實現機制可能不同。每種語言的作用域規則決定了如何從名稱的宣告中找到它的使用位置。如果一個過程中的名稱使用在其宣告的作用域內,則該使用是區域性的;否則,該使用是非區域性的。根據特定語言中變數的作用域,實現儲存管理。變數的生命週期 - 變數的生命週期是…… 閱讀更多

執行時儲存管理在編譯器設計中的作用是什麼?

Ginni
更新於 2021年11月8日 10:50:13

3K+ 次瀏覽

編譯器需要向作業系統請求一塊記憶體。編譯器利用這塊記憶體來執行已編譯的程式。這塊記憶體稱為儲存管理。編譯器必須執行的一項重要任務是分配目標機器的資源來表示源程式正在操作的資料物件。編譯器必須確定源程式中資料物件的執行時表示。在源程式中,資料物件的執行時表示(例如整數和實數變數)通常採用等效資料物件的…… 閱讀更多

符號表中兩種陣列表示法是什麼?

Ginni
更新於 2021年11月8日 10:49:46

366 次瀏覽

符號表是一種資料結構,它支援一種有效且高效的方式來儲存有關源程式中出現的各種名稱的資訊。這些名稱在原始碼中用於標識不同的程式元素,例如變數、常量、過程和語句標籤。每次在源文字中遇到名稱時都會搜尋符號表。當找到新名稱或有關現有名稱的新資料時,符號表的內容就會修改。因此,符號表必須具有一個有效的機制來訪問表中儲存的資料,以及…… 閱讀更多

為給定的語法構建 LALR(1) 解析表。問題 - 為語法構建 LALR(1) 解析表。S → A a|b A c|dc|bdaA → d使用 LALR 解析表解析輸入字串“bdc”。

Ginni
更新於 2021年11月8日 10:46:40

9K+ 次瀏覽

解決方案將產生式編號如下:步驟 1 - 構造增廣語法(0) S′ → S(1) S → A a(2) S → b A c(3) S → d c(4) S → b d a(5) A → d步驟 2 - 查詢閉包和 goto。查詢語法的規範 LR(1) 專案集。在狀態 I0 到 I10 中,沒有狀態具有相同的第一個元素或核心。因此,我們無法合併狀態。一些狀態將用於構建 LALR 解析表。LALR 解析表字符串“bdc”的解析堆疊輸入字串操作$ 0 bdc $移位 3$ 0 b 3 dc $移位 7$ 0 b 3 d 7 c … 閱讀更多

使用 SLR 解析驗證給定語法是否接受字串 id * id + id。考慮語法的 SLR 解析表E → E + TE → TT → T ∗ FT → FF → (E)F → id使用在示例中構建的 SLR 解析表檢查字串 id * id + id 是否被接受。

Ginni
更新於 2021年11月8日 10:36:36

2K+ 次瀏覽

解決方案初始狀態為 LR 解析器狀態 0。在字串末尾新增 $,即 id * id + id $。堆疊輸入字串原因0 id * id + id操作 [0, id] = s5 ∴ 移位 id 和狀態 50 id 5 * id + id $操作 [5, *] = r6。∴ 透過 F → id 歸約。goto(0, F) = 30 F 3 * id + id $操作 [3, *] = r4,透過 T → F 歸約 goto(0, T) = 20 T 2 * id + id $操作 [2, *] = s7,移位 *,70 T 2 * 7 id + id $操作 [7, id] = s5,移位 id,5… 閱讀更多

編譯器設計中 DFA 和 NFA 的區別是什麼?

Ginni
更新於 2021年11月8日 10:23:06

2K+ 次瀏覽

確定性有限自動機 (DFA)確定性意味著對於每個輸入,只有一個狀態自動機可以從其當前狀態轉換到該狀態。在確定性有限自動機中,磁頭只能在一個方向上移動以掃描輸入帶符號。但在雙向有限自動機的情況下,在掃描輸入符號時,磁頭可以從其當前位置向右或向左移動。表示確定性有限自動機有兩種方法:狀態轉換圖它是一個有向圖或流程圖,具有狀態和邊。透過……閱讀更多

什麼是啟用記錄?

Ginni
更新於 2021年11月8日 10:16:59

12K+ 次瀏覽

啟用記錄是一種資料結構,在呼叫過程/函式時會啟用/建立該結構,其中包括有關該函式的以下資料。'C'語言中的啟用記錄包括實際引數引數數量返回地址返回值舊堆疊指標 (SP)函式或過程中的區域性資料這裡,舊 SP 儲存呼叫此過程的程式的啟用記錄的堆疊指標的值,這會導致生成此啟用記錄,即它是指向呼叫者的啟用記錄的指標。在堆疊分配方案中,當過程 A 呼叫過程 B 時,B 的啟用記錄將…… 閱讀更多

編譯器設計中的儲存分配技術有哪些?

Ginni
更新於 2023年10月31日 13:50:45

52K+ 次瀏覽

各種儲存分配技術如下:靜態分配這是最簡單的分配方案,其中資料物件的分配在編譯時完成,因為編譯器可以確定每個資料項的大小。不允許使用遞迴子程式和可調整長度的陣列。在靜態分配中,編譯器可以確定每個資料物件所需的儲存量。因此,編譯器可以很容易地識別這些資料在啟用記錄中的地址。FORTRAN 使用這種儲存分配策略。優點易於實現。允許型別檢查…… 閱讀更多

編譯器設計中的列表和自組織列表是什麼?

Ginni
更新於 2021年11月8日 10:11:44

1K+ 次瀏覽

列表從概念上講,這是為符號表實現最簡單且易於實現的資料結構,如下所示:它可以使用單個數組來儲存名稱及其相關資訊。新名稱按遇到的順序插入到列表中。它可以從陣列的開頭到指標 AVAILABLE(指示陣列空閒部分的開頭)標記的位置檢索有關名稱的資料。放置名稱時,可以在…… 閱讀更多

如何使用訪問連結和顯示來訪問非區域性名稱?

Ginni
更新於 2021年11月8日 10:02:51

6K+ 次瀏覽

訪問連結是指向每個啟用記錄的指標,它獲得了巢狀過程詞法作用域的直接實現。換句話說,訪問連結用於實現詞法作用域語言。“訪問線”可能需要放置被呼叫過程所需的資料。處理在不同詞法級別定義的靜態連結的改進方案是使用稱為顯示的資料結構。顯示是一個指向啟用記錄的指標陣列。Display[0] 包含指向在詞法級別…… 閱讀更多

廣告