Back to IF2224 Teori Bahasa Formal dan Otomata

Topic: Tabel Informasi (Symbol Table)

Questions/Cues

  • Fungsi Utama Tabel

  • Elemen Tabel Simbol

  • Tabel Identifier

  • Tabel Array

  • Tabel Blok

  • Tabel Display

Reference Points

  • Slide 16_2025: Hal 38 - 52

1. Fungsi Tabel Informasi

Tabel informasi membantu kompiler dalam dua hal utama:

  1. Memeriksa kebenaran semantik dari program sumber.

  2. Memudahkan pembuatan kode antara dan proses pembangkitan kode mesin.

2. Struktur dan Elemen Tabel

Elemen umum yang disimpan dalam tabel meliputi:

  • Nomor urut dan Nama identifier.

  • Tipe data dan alamat memori saat eksekusi (Object time address).

  • Dimensi (untuk array).

  • Nomor baris saat deklarasi dan referensi.

3. Implementasi Jenis-Jenis Tabel

Kompiler menggunakan beberapa tabel khusus:

  • Tabel Identifier: Menampung semua nama variabel, konstanta, prosedur, dan fungsi. Mencatat level blok (depth of block) dan jenisnya.

  • Tabel Array: Menyimpan detail khusus array: tipe indeks, tipe elemen, batas atas/bawah, jumlah elemen, dan ukuran total memori.

  • Tabel Blok: Mencatat variabel yang ada pada blok yang sama. Berisi batas awal/akhir blok serta ukuran variabel/parameter dalam blok tersebut.

  • Tabel Real & String: Menyimpan nilai konstanta pecahan atau teks secara terpisah.

  • Tabel Display: Mencatat blok-blok yang sedang aktif. Implementasinya menggunakan konsep Stack.

4. Atribut dalam Tabel Identifier

  • Objek: Menandai apakah identifier tersebut adalah konstanta, variabel, prosedur, atau fungsi.

  • Tipe: Menandai tipe data dasar (Integer, Real, Boolean, Char) atau tipe terstruktur (Array, Record).

  • Normal: Digunakan pada parameter prosedur untuk membedakan pemanggilan by value dan by reference.

Summary

Tabel Informasi (atau Tabel Simbol) adalah struktur data sentral dalam kompiler untuk manajemen data identifier dan struktur program. Melalui berbagai tabel spesifik seperti Tabel Identifier, Array, Blok, dan Display, kompiler dapat melacak atribut variabel, memastikan konsistensi tipe data, dan mengatur pemetaan alamat memori selama proses pembangkitan kode.