什麼是表示作用域資訊?


表示作用域資訊是一個概念,其中每個變數名的作用域都儲存在符號表中,以便我們可以在不同的塊和不同的位置使用相同的名稱。

表示作用域資訊包括

  • 變數在特定塊中的生命週期。
  • 在符號表中表示名稱,以及它出現的塊的指示符。
  • 假設我們在塊 A 中有一個變數名“a”,在塊 B 中有相同的變數。假設我們在符號表中儲存“a”而沒有塊資訊。在這種情況下,它只會保留它遇到的第一個“a”例項,因此為了克服此問題,名稱以 (變數名,塊名) 的形式儲存,以便可以在不同的塊和過程中使用相同的名稱。
  • 作用域表示反映了變數名在源程式中的可見性。


在 FORTRAN 中表示作用域資訊

  • FORTRAN 程式由主程式、子程式和函式組成。
  • 每個名稱的作用域都包含一個例程,即變數的作用域限制在例程的末尾。
  • 它可以在到達例程末尾時為每個例程生成目的碼,因此需要消除儲存在符號表中屬於該特定例程的變數的名稱。
  • 因此,我們需要在符號表中僅儲存對例程外部和公共塊的名稱。


考慮如下所示的雜湊方案:

在每個鏈中,對當前例程外部的名稱將首先出現。

它可以將新的內部名稱追加到末尾,並將新的外部名稱追加到開頭。

從上圖可以清楚地看出,雜湊值選擇了名稱 2,因此 2 是當前例程的一部分,而名稱 1 對其外部,因此名稱 1 寫在開頭,名稱 2 追加到末尾。

當我們到達例程的末尾併為其生成目的碼時,我們將指標重置為可重用表中的可用儲存,而不是永久儲存。

從永久表到可重用表的所有指標都設定為 null,並且雜湊表將直接指向可重用表。

我們還可以透過以下方式重用用於名稱的儲存空間。我們將使用名稱連結儲存區中的位置來表示名稱,並且由於該區域被重用,因此這樣的位置可以描述不同的例程。


更新於: 2021-11-08

2K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.