PL 의미론(3)
프로그래밍 언어의 의미론과 추상 구문 트리(AST) 해석 방식을 설명합니다. 정적/동적 유효범위 규칙, 상태와 상태 변환 함수, 인터프리터의 작동 원리, 그리고 연산자의 좌결합과 우결합 특성을 다루고 있습니다.
의미론 - AST
정적 유효범위(Static scope) 규칙 : 선언된 이름은 선언된 블록 내에서만 유효
동적 유효범위(Dynamic scope) 규칙 : 호출위치가 중요(자바스크립트의 this와 유사)
상태(State) : 변수들의 현재 값
상태 변환 함수 : Eval
-
인터프리터 : 프로그램 AST를 순회하면서 수식값 계산하고 문장 의미에 따라 각 문장을 해석
인터프리터 함수 Eval
- Eval: (Statement, State) -> State
의미론 : 각 문장 S마다 상태 변환 함수 정의, 프로그램 실행과정을 상태 변환 과정으로 설명
현재 계속 정적 유효범위 규칙을 따르는 중
좌, 우결합
연산자 결합성 : 동일한 우선순위 연산자가 두개 이상 인접한 경우 무엇을 먼저 수행하는지? 좌, 우 결합
좌측, 우측 유도와 구분할 것
-
좌결합 : 왼쪽부터 우선 결합하는 규칙(대부분 이항 연산자)
-
좌순환 규칙 :
E->E-T|T
앞의 E가 재귀 즉, 왼쪽 서브트리가 더 깊고 먼저 연산되는 것.
-
좌순환 규칙 :
-
우결합 : 오른쪽부터 우선 결합하는 규칙(대부분 단항, 대입 연산자)
-
우순환 규칙 :
!E|id|...
뒤의 E가 재귀 즉, 오른쪽 서브트리가 더 깊고 먼저 연산되는 것.
-
우순환 규칙 :
댓글남기기