티스토리 뷰

Computer Science

PL Ch 4. Variable

words 2011. 5. 16. 10:25
keyword : 특정한 context에서만 특별한 word
reserved word : user-defined name으로 사용될 수 없는 special word

Variable을 나타내는 주요 특징 6가지 : name, address, value, type, lifetime, scope

Address  : variable이 연관된 주소
 - 두개의 variable name이 같은 메모리 위치를 가리키는 경우, aliase라고 함
Type : variable의 값의 range와 그 variable에 적용되는 set of operation을 결정한다.
Value : variable이 연관된 위치의 값
 * binding : attribute와 entity, 또는 operation과 symbol의 association
 * static binding : run time 이전에 바인딩이 일어나고 프로그램 실행 중간에 변경되지 않을 때
 * dynamic binding : run time 중간에 바인딩이 일어나거나 프로그램 실행 중에 변경될 수 있을 때

Type Binding 
 - static : explicit의 경우에는 변수의 type을 선언하는 statement를 이용한다.
              implicit의 경우에는 변수가 처음 사용시 디폴트하게 타입이 결정된다.
 - dynamic : assignment 마다 type이 결정된다.
Storage Binding
 - allocation : available cell의 pool에서 cell을 얻는 것
 - deallocation : pool에 cell을 반납하는것

Lifetime : variable이 특정 memory cell에 bound되는 시간
 - Lifetime의 카테고리
   1. static : 실행 시작 전에 memory cell로 bound되고 실행하는 동안 같은 memory cell로 bound된 것이 유지됨
   2. stack-dynamic : 변수가 선언될 때 storage binding됨(ex>local variable)
   3. explicit heap-dynamic : 실행 중간에 프로그래머에 의해서 할당되고 해제됨.
   4. implicit heap-dynamic : assignment에 의해 할당되고 해제됨

Type Checking : operator의 operand들이 compatible 타입인지 결정하는 과정
Compatible type : operand 들이 둘다 legal하거나 explicit하게 conversion되는 것. explicit conversion을 coercion이라 한다.
Strongly typed Language : type error가 항상 detect될때!

Type Compatibility
 - by name : 두 변수가 same declaration안에 있거나 혹은 같은 타입 이름을 이용하여 선언된 경우
 - by structure : 내부 구조가 동일할 경우

Scope : statement가 visible한 범위
 - static : program text기반. spatial한 메커니즘이 적용된 것
 - dynamic : calling sequence 기반.

Referencing Environment : 스테이트먼트가 visible한 모든 statement의 콜렉션

Variable Initialization : 스토리지에 바운드 될때 값이 할당되는 것. 

'Computer Science' 카테고리의 다른 글

[Compiler] JFlex & JCup 흐름  (0) 2011.05.28
PL Ch 5. Data Type  (0) 2011.05.16
PL Ch 3. 정리  (0) 2011.05.16
[Algorithms] KMP 알고리즘  (0) 2011.04.30
운영체제 동기화 부분(2)  (0) 2011.04.01
댓글