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

什麼是語法制導翻譯器的實現?

Ginni
更新於 2021年11月3日 11:16:49

2K+ 瀏覽量

語法制導翻譯方案是一種上下文無關文法,其中屬性與文法符號相關,語義動作包含在花括號 ({ }) 中。這些語義動作是解析器在合適的時間用於翻譯的子程式。語義動作在產生式右側的位置表示解析器將在何時知道其實現時間。當它可以生成翻譯方案時,它應該提供在動作定義屬性值時該屬性值可用。這需要右側符號的繼承屬性... 閱讀更多

什麼是語法制導翻譯方案的型別?

Ginni
更新於 2021年11月3日 11:13:02

4K+ 瀏覽量

語法制導翻譯方案有兩種型別,如下所示:綜合翻譯在這種翻譯中,產生式規則左側變數的值取決於產生式規則右側變數的值。例如,E → E(1) + E(2) {E. VAL = E(1). VAL + E(2). VAL}這裡,產生式規則左側的 E 可以透過 E(1) 和 E(2) 的值之和來計算,E(1) 和 E(2) 位於產生式規則的右側,即左側變數依賴於右側變數。在綜合翻譯中,節點上綜合屬性的值... 閱讀更多

什麼是語法制導翻譯?

Ginni
更新於 2021年11月3日 11:03:56

7K+ 瀏覽量

在語法制導翻譯中,除了文法之外,它還可以識別一些非正式符號,這些符號被稱為語義規則。在實現語義分析後,源程式被修改為中間形式。中間程式碼生成階段需要一些資訊來將語義檢查過的語法樹轉換為中間程式碼。但是,這些資訊或變數的屬性不能僅由上下文無關文法單獨表示。因此,必須將一些語義動作附加到上下文無關文法中,這有助於中間程式碼生成階段生成中間程式碼。因此,將屬性附加到變數... 閱讀更多

查詢以下文法的 FIRST 和 FOLLOW 集E → E + T|TT → T ∗ F|FF → (E)|id

Ginni
更新於 2021年11月3日 10:58:27

8K+ 瀏覽量

解答FIRST 的計算E → E + T|T由於 FIRST(E) 不包含 ε。∴ FIRST(E) = FIRST(E + T) = FIRST(E)由於 E → T∴ FIRST(E) = {FIRST(T)}                                       (1)T → T ∗ F|F由於 FIRST(T) 不包含 ε 或 T 不推匯出 ε。∴ FIRST(T) = FIRST(T ∗ F) = {FIRST(T)}由於 T → F (FIRST(T) = {FIRST(F)}                      (2)F → (E)|id∴ 根據 FIRST 的規則 (3)FIRST(F) = {(, id}    ... 閱讀更多

編譯器設計中 LR 解析器的型別有哪些?

Ginni
更新於 2021年11月3日 11:52:15

9K+ 瀏覽量

LR 解析器有三種類型,如下所示:簡單 LR 解析器 (SLR) - SLR 代表“簡單 LR 解析器”。它執行起來非常容易且經濟高效。但它無法為某些類別的文法建立解析表,即為什麼使用 CLR 和 LALR,它們主要實現了所有類別或型別的文法。它構造解析表,以幫助執行輸入字串的解析。如果給定上下文無關文法,則可以進行 SLR 解析。在 LR(0) 中,0 表示沒有前瞻符號。LR(0) 解析動作和轉到函式... 閱讀更多

編譯器設計中 LR 解析器的組成部分是什麼?

Ginni
更新於 2021年11月3日 13:19:30

958 瀏覽量

LR 解析器是一類自底向上解析器,用於解析上下文無關文法。LR 解析稱為 LR(K) 解析。LR 解析器是一種移進-歸約解析器,它利用確定性有限自動機,透過從下到上讀取棧來識別所有適用的字首。它決定是否存在任何控制代碼。右句型的可行字首是指包含控制代碼但不包含控制代碼右側任何符號的字首。因此,如果構建了一個識別右句型可行字首的有限狀態機,... 閱讀更多

什麼是 LR 解析表的實現?

Ginni
更新於 2021年11月3日 09:56:52

2K+ 瀏覽量

LR 解析表是一個二維陣列,其中每個條目表示一個動作或轉到條目。具有大量產生式的程式語言文法具有大量狀態或專案,即 I0、I1……In。因此,由於狀態過多,將填充更多動作和轉到條目,這需要大量記憶體。因此,二維陣列不足以儲存如此多的動作條目,因為每個條目都需要至少 8 位來編碼。因此,我們必須使用比二維陣列更有效的編碼來編碼動作和轉到欄位。例如,... 閱讀更多

考慮以下二義文法。E → E + EE → E ∗ EE → (E)E → id(a) 為上述文法構造 LR(0) 專案。(b) 為文法構造 SLR 解析表。(c) 解析輸入字串 id + id * id。

Ginni
更新於 2021年11月3日 09:52:32

5K+ 瀏覽量

解答步驟 1 - 構造擴充文法(0) E′ → S(1) E → E + E(2) E → E ∗ E(3) E → (E)(4) E → id步驟 2 - 查詢閉包和轉到函式以構造 LR(0) 專案。Closure(E′ → ∙ E) =在 I9 上應用 goto∵ 無法在 I9 上應用 goto,因為 E → (E). 中的點位於最後一個位置。步驟 3 - FOLLOW 的計算應用規則 (1) FOLLOWFOLLOW(B) = {$}                                                         (1)E → E + E比較... 閱讀更多

什麼是移進歸約解析器?

Ginni
更新於 2021年11月2日 12:16:22

12K+ 瀏覽量

移進歸約解析器是一種自底向上解析器。它從葉子到根生成語法樹。在移進歸約解析器中,輸入字串將被歸約為起始符號。這種歸約可以透過反向處理最右推導來產生,即從起始符號到輸入字串。移進歸約解析器需要兩個資料結構輸入緩衝區棧移進歸約解析的各個步驟如下:移進歸約解析的各個步驟如下:它使用一個棧和一個輸入緩衝區。在棧的底部插入 $... 閱讀更多

證明以下文法是 LR(1) 的S → A a |b A c |B c | b B aA → dB → d

Ginni
更新於 2021年11月2日 12:01:16

6K+ 瀏覽量

步驟1 - 構造擴充套件文法(0) S′ → S(1) S → A a(2) S → b A c(3) S → B c(4) S → b B a(5) A → d(6) B → d步驟2 - 查詢閉包和goto。構造一組LR(1)專案。這裡所有方框都代表新狀態。LR(1)分析表因此,LR(1)分析表沒有多個條目。文法是LR(1)。LR(1)或規範LR分析表的構造輸入 - 擴充套件文法G'。輸出 - 規範LR(1)分析表方法填充“移進”條目(s) - 應用CLR分析表構造的規則(2a)。考慮... 閱讀更多

廣告

© . All rights reserved.