본문 바로가기
프로그래밍언어론

[프로그래밍언어론] 12. 블록(Block), 환경(Environment)

by 파스텔코랄 2023. 10. 10.
블록(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) : 프로그램이 시작될 때 생성된 바인딩의 환경

댓글