반응형
1. Actual Type (실제 타입)
정의
actual type은 특정 표현식 또는 변수(<expr>, <var> 등)가
실제로 계산되거나 결정되는 타입을 의미한다.
특징
- 하위 노드에서 합성(synthesized) 되어 상위로 전달됨
- 값이나 연산 결과를 기반으로 결과 타입이 결정됨
- 컴파일러의 타입 추론 결과라고 볼 수 있음
예시
- 3 + 5 → actual type = int
- a * b → a와 b의 타입에 따라 결정
- <expr> → 자식 <term>이나 <factor>에서 계산된 타입을 받아옴
2. Expected Type (기대 타입)
정의
expected type은 특정 표현식이 위치한 문맥에서
**“이 자리에 와야 하는 타입”**을 의미한다.
특징
- 상위 노드에서 하위 노드로 전달되는 상속(inherited) 속성
- 타입 검사 시 기준(Constraint) 역할 수행
- 타입 오류 검출에 사용됨
예시
- int x = <expr> → <expr>의 expected type = int
- 함수 호출 f(<expr>) → 함수 파라미터 타입이 expected type
- 조건문 if (<expr>) → <expr>의 expected type = bool
3. 핵심 구조 해석 (질문에 대한 직접 해석)
주어진 문장:
- actual_type: synthesized for <var> and <expr>
→ <var>와 <expr>의 타입은
자식 노드에서 계산되어 위로 전달됨 - expected_type: inherited for <expr>
→ <expr>는
상위 문맥으로부터 기대되는 타입을 전달받음
4. 두 개념의 관계
구분actual typeexpected type
| 의미 | 실제 계산된 타입 | 요구되는 타입 |
| 흐름 | 하위 → 상위 | 상위 → 하위 |
| 속성 유형 | synthesized | inherited |
| 역할 | 결과 타입 결정 | 타입 검사 기준 |
5. 동작 과정 (핵심 이해)
타입 검사는 다음 방식으로 이루어진다:
- 상위 문맥이 expected type을 내려보냄
- 하위 표현식이 actual type을 계산함
- 두 값을 비교하여
- 일치 → 정상
- 불일치 → 타입 에러
6. 간단 예시
int x = a + b;
- <expr> = a + b
- actual type → a, b로부터 계산됨 (예: int)
- expected type → int (좌변 변수 x 때문)
→ actual == expected → OK
7. 결론
- actual type은 “이 표현식이 실제로 무엇인가”
- expected type은 “이 위치에서 무엇이어야 하는가”
두 개념은 상호 비교를 통해
**정적 타입 검사(static type checking)**를 수행하는 핵심 메커니즘이다.
반응형
'CS-Junior > 프로그래밍언어론' 카테고리의 다른 글
| BNF 와 EBNF 의 차이점은 무엇인가? (0) | 2026.03.23 |
|---|---|
| BNF란 무엇인가? (0) | 2026.03.22 |