1. 블록과 영역
- 영역 : 프로그램에서 사용되는 식별자가 의미를 가질 수 있는 범위, 식별자의 사용이 허락되는 프로그램 범위
- Algol 60의 영역
- 복합문 : begin-end 를 사용하여 일련의 문장집합을 하나의 단위문장으로 표시하는 형태, 복합문 안에 변수, 부프로그램, 레이블과 같은 지역 식별자를 선언하고 그 묶인 부분만이 복합문의 영역이 됨
- 블록 : 내부에서 식별자를 선언하여 새로운 프로그램 환경을 설정할 수 있는 특별한 언어구조를 제공
- 선언문의 처리효과
- 번역 시간 : 선언문을 만날 때
- 실행 시간 : 선언문이 있는 블록이 활성화 될 때
- 변수는 블록이 실행되는 동안에만 의미있는 값을 지님
- 프로그램의 수행제어가 블록을 벗어나면 할당되었던 기억장소가 회수됨
- 변수의 수명 : 변수에 의미있는 기억장소가 할당되어 있는 기간
-C언어 : 단일 함수 단일블록, 블록안에는 여러 개의 블록 내포가능
2. 정적 영역과 동적 영역
- 식별자의 영역 결정
- 시점에 따른 구분
- 정적 영역 규칙 : 번역 시간에 결정, 일반적인 컴파일러 언어
- 동적 영역 규칙 : 실행 시간에 결정, LISP 초기 버전 등
- 블록 구조 언어(정적 내포 관계)
- 지역 변수 : 블록에서 선언된 변수와 형식 매개변수
- 전역 변수(비지역변수) : 블록을 내포하고 있는 외부 블록에서 선언된 변수
- 자유 변수 : 현 블록에서 정의되지 않은 변수, 현 블록을 내포하고 있는 가장 안쪽의 블록을 조사, 끝까지 선언이 없으면 오류로 판명
- 변칙 현상 : 정적 영역 규칙을 따름으로써 생기는 현상
3. 언어에서의 영역
- Fortran
- 모든 변수는 명시적 혹은 묵시적으로 선언되고 선언된 프로그램 내에서는 지역 변수가 됨
- 전역변수의 선언은 COMMON 문을 사용
- COMMON을 보유하는 다른 부프로그램을 통하여 공유
- PL/1
- BEGIN-END 그룹을 도입
- 모든 변수를 반드시 명시적으로 선언하지 않아도 되기 때문에 문제점이 나타남
'프로그래밍 > TIL(Today I Learned)' 카테고리의 다른 글
11강 기억장소 할당 (0) | 2018.10.16 |
---|---|
10강 영역과 수명(2) (0) | 2018.10.14 |
8강 자료형(2) (0) | 2018.10.14 |
6강 Context-free 문법의 효율화 (0) | 2018.10.14 |
7강 자료형 (0) | 2018.10.11 |