프로그래밍 언어론 3-4강. 스코프 구현(Implementing Scope)

[프로그래밍 언어론]

2019. 10. 26. 14:36

 

[정적 스코프 구현]

- Symbol table

  : 정적 스코프에서 name 추적위해 사용하는것.

  : 사전역할. name과 정보(object)를 매핑해서 정보를 가지고 있는다(컴파일러가 알고있음)

   (중복된 name으로 다른 object 부여 가능)

 

# Symbol table의 기본 연산

  1) Insert new mapping ( =새로운 name-to-object 바인딩 생성)

  2) 이미 name에 대한 바인딩 있는지 검색

 

# Symbol table 예시

int a = 3;
int b = 4;
void f(){
  int a = 5;
  }

# symbol table 상태 : LIFO 구조

id a 5    // enter_scope연산자, leave_scope연산자 존재

id b 4

id a 3   // 맨 아래 : 이방법이기에 name 검색시, 위에서부터 검색하면, 중복된 name일시 가장 최근바인딩 보인다

 

 

[동적 스코프 구현]

: 인터프리터가 Symbol table과 유사한 작업을 수행하는 연산자를 실행시점(run-time)에 수행한다.