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

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

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

426 次檢視

一些因素會影響程式語言的實現,如下所示 -作用域 - 宣告的作用域是指程式中應用該宣告的那一部分。不同的語言可能採用不同的實現機制。每種語言的作用域規則都決定了如何從名稱的宣告中進行訪問。如果過程中的名稱使用在該過程的聲明範圍內,則該名稱的使用是區域性的;否則,該名稱的使用是非區域性的。根據特定語言中變數的作用域,實現儲存管理。變數的生命週期 - 變數的生命週期是... 閱讀更多

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

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

3K+ 次檢視

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

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

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

367 次檢視

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

為給定語法構造 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 3dc $移位 7$ 0 b 3 d 7c ... 閱讀更多

使用 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,移位 ∗,70T2*7id + id $操作 [7, id] = s5,移位 id,50T2*7 id 5+id $操作 ... 閱讀更多

編譯器設計中 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] 包含指向在詞法級別...定義的過程的最最近啟用的啟用記錄的指標。 閱讀更多

廣告