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

考慮語法S → CCC → c C | d構建 LALR(1) 分析器的分析表。

Ginni
更新於 2021年11月2日 11:56:06

6K+ 次瀏覽

解決方案步驟 1 - 構建 LR(1) 專案集。首先,應該生成所有 LR(1) 專案集。在這些狀態中,狀態 I3 和 I6 可以合併,因為它們具有相同的核心或第一個元件,但第二個元件(向前檢視)不同。類似地,狀態 I4 和 I7 是相同的。類似地,狀態 I8 和 I9 是相同的。所以,I3 和 I6 可以組合成 I36。I4 和 I7 組合成 I47。I8 和 I9 組合成 I89。所以,狀態將是∴ I3 = goto(I0, c)但 I3、I6 組合成 I36∴ I36 = ... 閱讀更多

什麼是 LALR(1) 分析器?

Ginni
更新於 2021年11月2日 11:50:29

4K+ 次瀏覽

LALR 分析器是向前檢視 LR 分析器。它的功能介於 SLR 和 CLR 分析器之間。它是 CLR 分析器的壓縮,因此在此獲得的表將比 CLR 分析表更小。在這裡,首先,我們將構建 LR(1) 專案。接下來,我們將查詢具有相同第一個元件的專案,並將它們合併以形成單個專案集。這意味著狀態具有相同的第一個元件,但不同的第二個元件可以整合到單個狀態或專案中。例如。假設如果I4:C → d ∙,c ... 閱讀更多

查詢語法的規範分析表 (CLR) 或 LR(1) 分析表。S → CCC → c C | d

Ginni
更新於 2021年11月2日 11:46:03

6K+ 次瀏覽

解決方案步驟 1 - 構建增強語法(0) S′ → S(1) S → CC(2) C → cC(3) C → d。步驟 2 - 查詢閉包和 goto 以構建 LR(1) 專案應用 goto 於 I7、I8、I9在 I7、I8、I9 中,我們有產生式 C → d ∙,$,c → cC ∙,c | d 和 ∙ C → cC ∙,$ 分別,即點不能進一步移動。因此,goto 不能應用於 I7、I8、I9。繪製 DFA首先,10 個狀態,即 I0 到 I9 將充當 DFA 的節點。使用 goto 語句連線邊。例如,goto(I0, S) = I1∴ 有 ... 閱讀更多

什麼是 CLR(1) 分析器?

Ginni
更新於 2021年11月2日 11:27:48

5K+ 次瀏覽

CLR 定義規範向前檢視。CLR 分析使用 LR(1) 專案的規範集合來構建 CLR(1) 分析表。CLR(1) 分析表與 SLR(1) 分析相比建立了更多狀態。在 CLR(1) 中,它只能在向前檢視符號中定位歸約節點。CLR 分析器的工作原理為語法的 LR(1) 專案集合的構建它需要三件事增強語法閉包函式goto 函式增強語法它是一種新的語法 G′,它包含一個新的產生式 S′ → S 和給定語法 G 的所有其他產生式。閉包過程 closure(I)begin Repeat for each item A → ... 閱讀更多

為以下語法構建 SLR 分析表。此外,分析輸入字串 a * b + a。

Ginni
更新於 2021年11月2日 11:25:43

36K+ 次瀏覽

描述 - 考慮語法E → E + T|TT → TF|FF → F*|a|b。解決方案步驟 1 - 構建增強語法並對產生式進行編號。(0) E′ → E(1) E → E + T(2) E → T(3) T → TF(4) T → F(5) F → F ∗(6) F → a(7) F → b。步驟 2 - 查詢閉包和 goto 函式以構建 LR(0) 專案。方框表示新狀態,圓圈表示重複狀態。FOLLOW 的計算我們可以找出FOLLOW(E) = {+, $}FOLLOW(T) = {+, a, b, $}FOLLOW(F) = {+, *, a, b, $}輸入字串 a * b + a 的分析 -堆疊    ... 閱讀更多

為以下語法構建 SLR(1) 分析表S → x A y |x B y |x A zA → q s | qB → q

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

3K+ 次瀏覽

解決方案步驟 1 - 構建增強語法(0) S′ → S(1) S → x A y(2) S → x B y(3) A → q S(4) A → q(5) B → q步驟 2 - 查詢閉包和 goto 函式以構建 LR(0) 專案。這裡方框表示新狀態,圓圈表示重複狀態。步驟 3 - FOLLOW 的計算S → x A yFOLLOW(S) = {$}                                                       (1)應用 FOLLOW 的規則 (2a)。將 S → x a y 與 A → ... 閱讀更多

證明每個 SLR(1) 都是無歧義的,但一些無歧義語法不是 SLR(1)。對於以下產生式檢查這一點。S → L = RS → RL →* RL → idR → L

Ginni
更新於 2021年11月2日 11:04:51

3K+ 次瀏覽

解決方案步驟 1 - 首先,將其轉換為增強語法 G′ 並對產生式進行編號(0) S′ → S(1) S → L = R(2) S → R(3) L →∗ R(4) L → id(5) R → L步驟 2 - 查詢閉包和 goto 函式以構建 LR(0) 專案。在以下 LR(0) 專案集中,方框表示新狀態,圓圈表示重複狀態步驟 3 - FOLLOW 的計算- 應用 FOLLOW 的規則 (1),我們得到FOLLOW(S) = $                                                 (1)S ... 閱讀更多

在編譯器設計中,SLR、CLR 和 LALR 分析器之間有什麼區別?

Ginni
更新於 2021年11月2日 11:00:27

53K+ 次瀏覽

SLR 分析器SLR 代表“簡單 LR 分析器”。它非常容易且經濟高效地執行。SLR 分析動作和 goto 函式來自識別可行字首的確定性有限自動機。它不會為所有語法專門定義分析動作表,但確實會在幾種程式語言的語法上成功。給定一個語法 G。它增強 G 以建立 G’,並且從 G’ 它可以構建 C,即 G’ 的專案集的規範集合。它可以使用以下簡單 LR 分析表從 C 構建 ACTION 分析動作函式和 GOTO goto 函式 ... 閱讀更多

如何填充分析表中的條目?

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

334 次瀏覽

分析器是編譯的第二階段。分析器將其輸入作為從上一階段生成的標記,即詞法分析器階段,並將它們組合起來以便可以識別它們的語法。例如,考慮 I0I0 - E′ → ∙ E      E → ∙ E + T     E → ∙ T     T → ∙ T ∗ F     T → ∙ F     F → ∙ (E)     F → ∙ id填充移進條目應用 SLR 分析表構建演算法的規則 (2a) 於一組 ... 閱讀更多

為以下語法構建 SLR(1) 分析表1. E → E + T2. E → T3. T → T * F4. T → F5.F → (E)6.F → id

Ginni
更新於 2021年11月2日 10:49:31

852 次瀏覽

解決方案生成 SLR 分析表的步驟生成 LR(0) 專案的規範集根據分析表演算法的規則 (2b) 計算 FOLLOW。FOLLOW 的計算根據 FOLLOW 的規則 (1)FOLLOW(E) = {$}                                                   (1)E → E + T應用規則 (2) FOLLOW即,將 E → E + T 與 A → α B β 進行比較E →ΕE+ TA →ΑBΒ∴ A = E,α = ε,B = E,β = +T∵ 因為 FIRST(β) = FIRST(+T) = {+}不包含 ε。∴ ... 閱讀更多

廣告
© . All rights reserved.