CS-Junior/프로그래밍언어론

Actual type과 Expected type은 각각 무엇인가?

김형준 2026. 3. 23. 13:03
반응형

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. 동작 과정 (핵심 이해)

타입 검사는 다음 방식으로 이루어진다:

  1. 상위 문맥이 expected type을 내려보냄
  2. 하위 표현식이 actual type을 계산함
  3. 두 값을 비교하여
    • 일치 → 정상
    • 불일치 → 타입 에러

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