Semantic analyzer
- 프로그램의 semantic은 의미를 뜻한다.
- 구문상으로 올바른 문법이어도 의미상 틀릴 수 있다.
Attribute Grammar
- CFG가 모든 프로그래밍 언어를 표현 불가능
- CFG에서 Attribute를 활용한 문법
- 심볼마다 속성을 가진다.
- 합성:S(X0)=f(A(X1),...,A(Xn)) 바텀업
- 상속: I(Xj)=f(A(X0),...,A(Xn)),fori<=j<=n
- 모든 속성이 상속됐다면 탑 다운으로 표현
- 모든 속성이 합성됐다면 바텀 업으로 표현
- 하지만 많은 경우 두 종류의 방식이 사용된다.
- expected_type: 부모로 부터 상속
- actual_type: 합성(?)
심볼 테이블