블록(Block)과 환경(Environment)이란?
블록
- 환경을 이해하기 위해서는 먼저 { ... }에 대해 생각해보자.
- 블록은 시작과 끝 기호로 식별되는 프로그램의 텍스트 영역이다.
- 블록에는 해당 지역에 대한 로컬 선언이 포함된다.
- 그러한 선언은 해당 지역 외부에서는 유효하지 않다.
- 블록은 다양한 방식으로 표현될 수 있다.
- 일반적으로 블록에 들어가고 나갈 때마다 환경이 변경된다.
- 블록은 중첩될 수 있다.
- 블록의 중복은 절대 허용되지 않는다.
- 마지막으로 열린 블록이 닫힐 때까지 이전 블록을 닫을 수 없다.
언어별 블록 표현 방식
Java if (a > 0 && b > 0) { q = a / b; } |
Python if a > 0 and b > 0: q = a /b |
Scheme (define var "PL") (let ((var 10)) ) |
블록 겹치기
- 일반적으로 블록 내에서는 로컬 환경을 고려한다.
- 겹치면 매우 복잡해진다.
- 따라서 이는 어떤 언어에서도 허용되지 않는다.
- 그러나 블록 중첩 정책은 언어마다 약간 다를 수 있다.
환경 유형
- 블록과 관련된 환경은 다음과 같이 구성될 수 있다.
- 로컬 환경(Local environment) : 블록에서 로컬로 선언된 이름에 대한 바인딩 집합
- 비로컬 환경(Non-Local environment) : 표시되지만 블록에서 선언되지는 않는 이름에 대한 바인딩으로 구성
- 글로벌 환경(global environment) : 프로그램이 시작될 때 생성된 바인딩의 환경
'프로그래밍언어론' 카테고리의 다른 글
[프로그래밍언어론] 14. 스택(Stack), 힙(Heap) (0) | 2023.10.11 |
---|---|
[프로그래밍언어론] 13. 가시성 규칙(Visibility Rules), 범위 규칙(Scope Rules) (0) | 2023.10.10 |
[프로그래밍언어론] 11. 이름(Name), 바인딩(Binding) (1) | 2023.10.10 |
[프로그래밍언어론] 10. 추상 구문 트리(AST)를 EBNF로 변환 (1) | 2023.10.10 |
[프로그래밍언어론] 9. BNF를 EBNF로 변환 (0) | 2023.09.19 |