Download presentation
Presentation is loading. Please wait.
Published byJesus Gubbins Modified over 9 years ago
1
Lecture # 21 Chapter 6 Uptill 6.4
2
Type System A type system is a collection of rules for assigning type expressions to the various parts of the program. A Type Checker implements a Type System
3
Type checking of Expressions E char {E.type=char} E int {E.type=int} E id {E.type= lookup (id.entry)} E E1 mod E2 { E.type= if E1.type= integer and E2.type=integer then integer else error } E E1[E2] {E.type= if E2.type= integer and E1.type= lookup(E1.type) then E1.type else error }
4
Type Checking of Statements S id := E { S.type := if id.type = E.type then void else type_error } S if E then S { S.type := if E.type = boolean then S 1.type else type_error } S while E do S 1 { S.type := if E.type = boolean then S 1.type else type_error } S S 1 ; S 2 { S.type := if S 1.type = void and S 2.type = void then void else type_error }
5
Testing the Type Equivalence of Expressions Public bool sequiv (s,t) { if s and t are the same basic type return true else if s=array(s1,s2) and t= array(t1,t2) then return sequiv(s1,t1) and sequiv(s2,t2) else if s=s1*s2 and t=t1* t2 then return sequiv(s1,t1) and sequiv(s2,t2) else return false }
6
Encoding of Type Expressions The expressions can be encoded in bits to check their type equivalence Type Constructor Encoding pointer01 array10 freturns11
7
Basic TypesEncoding boolean 0000 char 0001 integer 0010 real 0011
8
Example Type Encoding Type Expression Char 000000 0001 Freturns(char)000011 0001 Pointer(Freturns(char)) 000111 0001 Array(Pointer(Freturns(char))) 100111 0001
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.