Kuliah 12 Type Checking
Macam Macam-macam checking pada compiler: Type checking: operand harus sesuai dengan operator Flow of control checking: break dalam while menyebabkan kontrol keluar dari while terdekat Uniqueness checking: suatu id harus didefinisikan sekali dalam scopenya Name-related checking: memperbolehkan pemakaian suatu nama (id) lebih dari sekali
Macam (Cont.)
System Type Kumpulan aturan-aturan yang memberikan suatu type pada elemen suatu bahasa. Contoh (Pascal, C): Jika kedua operand dari +, *, -, / mempunyai type integer maka hasilnya harus integer Hasil dari operator unari & adalah suatu pointer ke suatu object. Jika type operandnya adalah x, maka hasilnya adalah pointer ke x.
System Type (Cont.) Type dasar : boolean, char, integer, real type Type yang dibuat: record, array, fungsi
Ekspresi type Type suatu elemen (konstrak) bahasa dinotasikan oleh ‘ekspresi type’. Ekspresi type dapat berupa type dasar atau type yang dibuat dengan memakai suatu operator (pembentuk type) pada ekspresi type lainnya.
Definisi ekspresi type Type dasar adalah ekspresi type. Type dasar khusus ‘type_error’ akan memberitahu adanya kesalahan dalam pemeriksaan type. Nama type merupakan ekspresi type (karena ekspresi type boleh diberi nama). Pembentuk type yang dipakai pada ekspresi type adalah ekspresi type.
Pembentuk type Array Jika T suatu ekspresi type maka array (I,T) juga ekspresi type yang menyatakan type suatu array dengan elemen bertype T dan indeks I. I biasanya suatu range integer. Contoh deklarasi dalam Pascal: var A : array[1..10] of integer memberikan ekspresi type array(1..10, integer) pada A.
Pembentuk Type (Cont.) Produk Jika T1 dan T2 adalah ekspresi type, maka produk cartesiannya T1 x T2 juga ekspresi type.
Pembentuk Type (Cont.) Record Type dari suatu record adalah produk dari type fieldnya. Contoh:
Pembentuk Type (Cont.) Definisi ini mendeklarasikan nama type row sebagai ekspresi type yang merepresentasikan: Record((address x integer) x (lexeme x array (1..15,char)) dan table dideklarasi sehingga mempunyai type yang direpresentasikan oleh row.
Pembentuk Type (Cont.) Fungsi Dalam pemrograman, fungsi didefinisikan sebagai pemetaan suatu domain type D ke range type R. type fungsi dinotasikan dengan ekspresi type: DR Contoh: Fungsi mod dalam pascal domainnya: int x int dan rangenya adalah int Function f(a,b : char) : integer, maka f mempunyai type char x char pointer (integer)
Pembentuk Type (Cont.) Ekspresi type boleh mengandung variable yang nilainya adalah ekspresi type.
Contoh implementasi type checker
Skema translasi
Skema translasi (Cont.)
Fungsi