1 11 1 assign var expr expr expectedtype

  • Slides: 14
Download presentation

1 -11 속성 문법 (예제) • 배정문에 대한 속성 문법 1. 구문 규칙: <assign>

1 -11 속성 문법 (예제) • 배정문에 대한 속성 문법 1. 구문 규칙: <assign> → <var> = <expr> 의미론 규칙: <expr>. expected_type ← <var>. actual_type 2. 구문 규칙: 의미론 규칙: 술어 함수: <expr> → <var>[2] + <var>[3] <expr>. actual_type ← if (<var>[1]. actual_type = int) and (<var>[2]. actual_type = int) then int else real endif <expr>. actual_type == <expr>. expected_type 3. 구문 규칙: 의미론 규칙: 술어 함수: <expr> → <var> <expr>. actual_type ← <var>. actual_type <expr>. actual_type == <expr>. expected_type 4. 구문 규칙: 의미론 규칙: <var> → A | B | C <var>. actual_type ← look_up(<var>. string)

속성 값 계산 • 예제 문법에서, “A = A + B”의 파스 트리 장식

속성 값 계산 • 예제 문법에서, “A = A + B”의 파스 트리 장식 과 정을 살펴보면 <assign> expected_type <expr> actual_type A actual_type = B 1. <var>. actual_type ← look_up(A) (규칙 4) 2. <expr>expected_type ← <var>. actual_type (규칙 1) 3. <var>[2]. actual_type ← look_up(A) (규칙 4) <var>[3]. actual_type ← look_up(A) (규칙 4) 4. <expr>. actual_type ← int 또는 real (규칙 2) 5. <expr>. actual_type == <expr>. expected_type (규칙 2) + actual_type C 13

속성 값 계산 • 완전히 속성화된 파스 트리 <assign> <expr> actual_type = real A

속성 값 계산 • 완전히 속성화된 파스 트리 <assign> <expr> actual_type = real A expected_type = real actual_type = real = B + actual_type = int C 14