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


符號表是一種資料結構,它支援一種有效且高效的方式來儲存源程式中出現的各種名稱的資訊。這些名稱用於原始碼中識別不同的程式元素,例如變數、常量、過程和語句的標籤。

每次在源文字中遇到名稱時都會搜尋符號表。當找到新名稱或有關現有名稱的新資料時,符號表的內容會修改。

因此,符號表必須具有一個有效的機制來訪問表中儲存的資料,以及向符號表新增新條目。在任何情況下,符號表都是一個有用的抽象,可以幫助編譯器確定和驗證程式碼的語義或含義。它將跟蹤程式中遇到的符號的名稱、型別、位置和屬性。

符號表的雙陣列表示

在符號表中,我們可以儲存不同型別的資訊和名稱。與其他名稱關聯的資訊也各不相同。因此,不建議為符號表中出現的每種型別的名稱分配相同的空間。

因此,它可以使用兩個陣列來儲存名稱和資訊。

雙陣列表示的特徵

  • 我們不會將記錄儲存在一個數組中,而是將使用兩個陣列。
  • 一個數組用於儲存識別符號,另一個數組用於儲存其屬性。
  • 兩個陣列透過一個規則連線。

如果我們假設一個識別符號佔用 1 個記憶體字,而與識別符號或名稱相對應的資訊佔用 4 個記錄。如果我們將識別符號儲存在位置 2i 處,並將識別符號對應的資訊儲存在 4i 處。

由於資訊佔用 4 個字。因此,資訊將從 4i 開始儲存,到 4i + 3 結束。

因此,要訪問特定名稱及其對應資訊的值,我們只需輸入 i 的值即可。

示例 - 如果我們輸入 i = 1

∴ 位置 2i = 2 * 1 = 2 處的名稱將被訪問。

位置 = 4i = 4 處的 資訊將被訪問。

∴ 根據 i 的各種值,我們可以找到與其他名稱相對應的不同資訊。

優點

  • 更快地訪問資訊。
  • 記憶體浪費少。

缺點

  • 需要額外的陣列
  • 符號表的複雜性增加
  • 它可能會增加記憶體需求。


更新於: 2021年11月8日

366 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.