Latihan Soal Teknik Kompilasi
Nama : Mohamad Tanwirul Akbar
NIM : 202131066
Latihan Soal Teknik Kompilasi
Pemindahan Nilai (Pass by Value): Metode ini melibatkan pengiriman nilai dari parameter pemanggil ke parameter penerima. Dalam metode ini, nilai parameter pemanggil dikopi ke parameter penerima, sehingga perubahan nilai pada parameter penerima tidak akan mempengaruhi nilai asli pada parameter pemanggil. Ini adalah metode yang paling umum digunakan dalam bahasa pemrograman seperti C atau Java.
Studi kasus: Misalkan kita memiliki fungsi "tambahDua(angka)" yang akan menambahkan 2 ke angka yang diberikan. Jika kita memanggil fungsi ini dengan argumen 5, maka nilai argumen tersebut akan disalin ke parameter fungsi "angka" dan fungsi akan mengembalikan nilai 7. Namun, nilai asli argumen 5 tidak berubah.
Pemindahan Referensi (Pass by Reference): Metode ini melibatkan pengiriman referensi atau alamat memori dari parameter pemanggil ke parameter penerima. Dalam metode ini, parameter penerima akan menunjuk langsung ke alamat memori dari parameter pemanggil. Sehingga, perubahan pada parameter penerima akan mempengaruhi nilai asli pada parameter pemanggil. Metode ini sering digunakan dalam bahasa pemrograman seperti C++ atau Python.
Studi kasus: Misalkan kita memiliki fungsi "tambahDua(angka)" yang akan menambahkan 2 ke angka yang diberikan. Jika kita memanggil fungsi ini dengan argumen 5 menggunakan pemindahan referensi, maka parameter fungsi "angka" akan menunjuk ke alamat memori argumen 5. Jika kita mengubah nilai parameter "angka" di dalam fungsi menjadi 7, maka nilai argumen asli juga akan berubah menjadi 7.
Pemindahan Nilai-Referensi (Pass by Value-Result): Metode ini menggabungkan konsep pemindahan nilai dan pemindahan referensi. Dalam metode ini, nilai parameter pemanggil disalin ke parameter penerima seperti pada pemindahan nilai, tetapi perubahan nilai pada parameter penerima akan mempengaruhi nilai asli pada parameter pemanggil setelah eksekusi selesai. Metode ini tidak umum digunakan dan ditemukan dalam beberapa bahasa pemrograman seperti Pascal.
Studi kasus: Misalkan kita memiliki fungsi "tambahDua(angka)" yang akan menambahkan 2 ke angka yang diberikan. Jika kita memanggil fungsi ini dengan argumen 5 menggunakan pemindahan nilai-referensi, nilai argumen 5 akan disalin ke parameter fungsi "angka". Namun, jika kita mengubah nilai parameter "angka" di dalam fungsi menjadi 7, setelah eksekusi fungsi selesai, nilai argumen asli juga akan berubah menjadi 7.
Dalam teknik kompilasi, pengurai (parser) memiliki peran penting dalam mengatasi kesalahan sintaks dalam kode sumber. Ketika terjadi kesalahan sintaks, parser perlu menerapkan strategi pemulihan kesalahan untuk melanjutkan analisis sintaks secara benar. Berikut adalah empat strategi umum dalam pemulihan kesalahan yang digunakan oleh parser:
Pemulihan dengan Pengabaian (Error Ignoring): Strategi ini melibatkan pengabaian token yang menyebabkan kesalahan dan beberapa token lainnya setelahnya hingga menemukan token yang diharapkan berikutnya. Dengan mengabaikan token yang tidak valid, parser dapat melanjutkan analisis sintaks dan mencari titik awal yang sesuai untuk melanjutkan proses analisis.
Contoh: Jika terdapat kesalahan pada token "+" dalam ekspresi matematika "5 + * 3", strategi pemulihan ini akan mengabaikan token "*" dan token "3" yang tidak valid, kemudian melanjutkan analisis dengan token berikutnya yang valid.
Pemulihan dengan Penyisipan (Error Insertion): Strategi ini melibatkan penyisipan token yang hilang atau tidak valid ke dalam urutan token untuk memperbaiki kesalahan sintaks. Penyisipan token ini dilakukan agar struktur sintaksis menjadi benar dan analisis dapat dilanjutkan.
Contoh: Jika terdapat kesalahan pada token ")" dalam ekspresi matematika "(5 + 3", strategi pemulihan ini akan menyisipkan token ")" yang hilang setelah token "3", sehingga menjadi "(5 + 3)".
Pemulihan dengan Penggantian (Error Replacement): Strategi ini melibatkan penggantian token yang tidak valid dengan token yang valid. Dengan mengganti token yang tidak valid, parser dapat menciptakan struktur sintaksis yang benar dan melanjutkan analisis.
Contoh: Jika terdapat kesalahan pada token "==" dalam pernyataan logika "if (a == b)", strategi pemulihan ini akan menggantikan token "==" dengan token "=". Sehingga pernyataan menjadi "if (a = b)".
Pemulihan dengan Pengulangan (Error Repetition): Strategi ini melibatkan pengulangan token atau sekuensi token tertentu untuk mencari titik pemulihan setelah kesalahan. Dengan mengulangi token, parser memiliki peluang untuk menemukan urutan token yang valid dan melanjutkan analisis.
Contoh: Jika terdapat kesalahan pada token "else" dalam pernyataan "if-else", strategi pemulihan ini akan mengulangi token berikutnya seperti "if-else-if" atau "if-else-while" untuk mencoba menemukan urutan token yang valid.
Strategi pemulihan kesalahan ini digunakan untuk memperbaiki kesalahan sintaks dan melanjutkan analisis sintaksis dengan cara yang paling tepat. Penggunaan strategi ini dapat bervariasi tergantung pada bahasa pemrograman, jenis parser yang digunakan, dan kebijakan pengembang kompiler.
Komentar
Posting Komentar