Как таблица символов касается статических цепочек и обзора?

Я беру принципы курса языков программирования прямо сейчас, но я не могу ни за что в жизни понять это. Это не домашняя работа просто общий вопрос о понятии.

В нашем классе мы говорили о статических цепочках и дисплеях. Я думаю, что понимаю, почему нам нужны они. Иначе, когда мы вложили методы, мы не можем выяснить, какая переменная мы говорим о том, когда мы вложили методы.

Мой профессор также говорил о таблице символов. Мой вопрос - то, для чего используется таблица символов? Как это касается статических цепочек?

Я дам некоторый фон (исправьте меня, если я неправ).


(Я собираюсь определить несколько вещей только для создания объяснений легче),

Предположим, что у нас есть этот код:

main(){
    int i;
    int j;
    int k;
    a(){
        int i;
        int j;
        innerA(){
            int i = 5;
            print(i);
            print(j);
            print(k);
        }
    }

    b(){
        ...
    }
    ...
}

И этот стек:

| innerA  |
| a       |
| b       |
| main    |
-----------              

Быстрое описание статических цепочек как напоминание.

Статические цепочки используются для нахождения, какая переменная должна использоваться, когда переменные переопределены во внутренней функции. В стеке, показанном выше каждого кадра, будет иметь указатель на метод, который содержит его. Так:

| innerA  | \\ pointer to a
| a       | \\ pointer to main
| b       | \\ pointer to main
| main    | \\ pointer to global variables
-----------        

(Принятие статического обзора, для динамического обзора, я думаю, что каждый стековый фрейм просто укажет на тот ниже его),

Я думаю это, когда мы выполняемся print(<something>) в innerA метод это произойдет:

currentStackframe = innerAStackFrame;
while(true){ 
    if(<something> is declared in currentStackFrame)
        print(<something>);
        break;
    else{
        currentStackFrame = currentStackFrame.containedIn();
    }
}

Быстрое напоминание таблицы символов

Я не действительно уверен, для чего таблица символов. Но это - то, на что это похоже:

Index is has value, 
Value is reference.
 __
|  |
|--|                        --------------------------------------------------
|  | --------------------> | link to next | name | type | scope level | other |
|--|                        --------------------------------------------------
|  |                              |
|--|                ---------------
|  |                |    
|--|                |             --------------------------------------------------
|  |                 ------->    | link to next | name | type | scope level | other |
|--|                              --------------------------------------------------
|  |
|--|
  • свяжитесь со следующим - если больше чем одна вещь имеет то же, имеет значение хэш-функции, это - ссылка
  • имя - название элемента (примеры: я, j, a, интервал)
  • введите - что вещь (примеры: переменная, функция, параметр)
  • уровень объема - не 100%, уверенных, как это определяется. Я думаю что:
    • 0 был бы создан-ins
    • 1 был бы globals
    • 2 был бы основной метод
    • 3 был бы a и b
    • 4 был бы innerA

Только вновь заявить о моих вопросах:

  • Для чего используется таблица символов?
  • Как это касается статических цепочек?
  • Почему нам нужны статические цепочки, так как информация об объеме находится в таблице символов.
6
задан sixtyfootersdude 2 August 2010 в 17:50
поделиться