Semantic analyzer

Oak_Cassia·2022년 6월 7일
0

Compiler

목록 보기
7/8

Semantic analyzer

  • 프로그램의 semantic은 의미를 뜻한다.
  • 구문상으로 올바른 문법이어도 의미상 틀릴 수 있다.

Attribute Grammar

  • CFG가 모든 프로그래밍 언어를 표현 불가능
  • CFG에서 Attribute를 활용한 문법
  • 심볼마다 속성을 가진다.
    • 속성은 여러 개 가질 수 있다.
  • 합성:S(X0)=f(A(X1),...,A(Xn))S(X_0)=f(A(X_1), ... , A(X_n)) 바텀업
  • 상속: I(Xj)=f(A(X0),...,A(Xn)),fori<=j<=nI(X_j) = f(A(X_0), ... , A(X_n)), for\, i<= j<= n
  • 모든 속성이 상속됐다면 탑 다운으로 표현
  • 모든 속성이 합성됐다면 바텀 업으로 표현
  • 하지만 많은 경우 두 종류의 방식이 사용된다.
  • expected_type: 부모로 부터 상속
  • actual_type: 합성(?)

심볼 테이블

  • 심볼 | 타입| 레벨(스코프)
profile
rust로 뭐할까

0개의 댓글