-
Bound and Free Identifiers (바운드/자유 식별자)컴공지식/프로그래밍언어론 2024. 9. 11. 15:30
식별자(Identifier)에 대해 더 깊이 들어가 보자.
식별자에는 바운드 식별자(Bound Identifier) 와 자유 식별자(Free Identifier) 라는 개념이 있다.
바운드 식별자는 프로그램 내에서 값이 바인딩된(할당된) 식별자다.
즉, 어떤 값에 연결된 변수라고 보면 된다.
예를 들어, with 구문에서 변수가 값을 할당받으면 그 변수는 바운드 식별자가 된다.
with {x {+ 1 2}} {+ x x}
여기서 x는 with 구문에서 {+ 1 2} 로 정의되고, 이는 3으로 계산된다. 이제 x는 3이라는 값에 바운드된 식별자가 된 거다.
이후 x는 3으로 해석돼서, x + x는 3 + 3으로 계산된다.
자유 식별자는 프로그램 내에서 정의되지 않은(바인딩되지 않은) 식별자를 의미한다.
자유 식별자는 프로그램에서 참조하려고 해도 그 값을 찾을 수 없기 때문에, 에러가 발생할 수 있다.
with {x {+ 1 2}} {+ x y}
여기서 x는 정의됐지만, y는 정의되지 않았다.
y는 어디서도 값을 할당받지 않았기 때문에 자유 식별자다.
이 경우 프로그램은 y가 뭔지 몰라서 에러가 발생한다.
'컴공지식 > 프로그래밍언어론' 카테고리의 다른 글
Scala로 WAE 정의하기 (0) 2024.09.11 BNF로 식별자 정의하기 (0) 2024.09.11 Arithmetic Expressions (AE)와 WAE (0) 2024.09.11 Inference Rules (추론 규칙) (0) 2024.09.11 BNF의 한계 (0) 2024.09.08