LATIHAN SOAL
Nama : jofris hutabarat
Nim : 202031052
14.Apa saja metode yang dipakai untuk mengirimkan parameter pada teknik kompilasi, jelaskan masing-masing metode tersebut dengan studi kasus
Dalam teknik kompilasi, terdapat beberapa metode yang dapat digunakan untuk mengirimkan parameter antara prosedur atau fungsi. Berikut adalah beberapa metode yang umum digunakan: 1. Pemindahan Nilai (Pass-by-Value): Metode ini mengirimkan salinan nilai parameter ke dalam subrutin yang dipanggil. Perubahan yang dilakukan terhadap parameter di dalam subrutin tidak mempengaruhi nilai asli dari parameter tersebut di luar subrutin. Contoh penggunaan metode ini adalah sebagai berikut: ```c void square(int num) { num = num * num; printf("Nilai dalam subrutin: %d\n", num); } int main() { int num = 5; square(num); printf("Nilai di luar subrutin: %d\n", num); return 0; } ``` Output: ``` Nilai dalam subrutin: 25 Nilai di luar subrutin: 5 ``` Pada contoh di atas, nilai `num` di dalam fungsi `square` berubah menjadi 25, tetapi nilai `num` di luar fungsi tetap 5. 2. Pemindahan Referensi (Pass-by-Reference): Metode ini mengirimkan alamat memori variabel ke dalam subrutin yang dipanggil. Dengan menggunakan alamat memori tersebut, subrutin dapat mengakses dan memodifikasi nilai variabel asli di luar subrutin. Contoh penggunaan metode ini adalah sebagai berikut: ```c void square(int *num) { *num = *num * *num; printf("Nilai dalam subrutin: %d\n", *num); } int main() { int num = 5; square(&num); printf("Nilai di luar subrutin: %d\n", num); return 0; } ``` Output: ``` Nilai dalam subrutin: 25 Nilai di luar subrutin: 25 ``` Pada contoh di atas, dengan menggunakan pemindahan referensi melalui pointer, nilai `num` di dalam fungsi `square` berhasil mempengaruhi nilai `num` di luar fungsi. 3. Pemindahan Nilai dan Referensi (Pass-by-Value-Result): Metode ini merupakan kombinasi dari pemindahan nilai dan referensi. Nilai parameter dikirimkan sebagai salinan, tetapi perubahan yang dilakukan di dalam subrutin akan mempengaruhi nilai asli dari parameter tersebut di luar subrutin. Contoh penggunaan metode ini adalah sebagai berikut: ```c void increment(int *num) { *num = *num + 1; } int main() { int num = 5; increment(&num); printf("Nilai setelah diubah: %d\n", num); return 0; } ``` Output: ``` Nilai setelah diubah: 6 ``` Pada contoh di atas, nilai `num` di dalam fungsi `increment` bertambah 1, dan perubahan tersebut mempengaruhi nilai `num` di luar fungsi. Metode pemindahan parameter yang digunakan dalam teknik kompilasi dapat bervariasi tergantung pada bahasa pemrograman dan aturan yang diterapkan. Contoh-contoh di atas menggunakan bahasa pemrograman C, namun prins ip-prinsip yang sama dapat diterapkan pada bahasa pemrograman lain dengan beberapa penyesuaian sintaksis yang sesuai.
15.Salah satu peran pengurai dalam teknik kompilasi adalah mengatasi kesalahan syntax, jelaskan 4 strategi dalam pemulihan kesalahan tersebut
Dalam teknik kompilasi, pengurai (parser) bertanggung jawab untuk mengurai kode sumber program dan memastikan kesesuaiannya dengan aturan sintaksis yang ditentukan oleh bahasa pemrograman. Ketika terjadi kesalahan sintaksis, parser dapat menerapkan strategi pemulihan kesalahan untuk mencoba memperbaiki atau memulihkan kesalahan tersebut. Berikut adalah empat strategi umum dalam pemulihan kesalahan yang digunakan oleh parser:
1. Pemulihan secara Sinkronisasi (Synchronization Recovery):
Strategi ini bertujuan untuk mencari titik sinkronisasi dalam kode setelah kesalahan terdeteksi. Parser melompati token-token yang tidak valid dan mencari token yang valid berikutnya untuk melanjutkan proses parsing. Metode yang umum digunakan dalam pemulihan sinkronisasi adalah "panic mode" atau "skip-and-resync", di mana parser melompati token yang tidak valid hingga menemukan token yang valid untuk melanjutkan parsing.
2. Pemulihan dengan Menghapus atau Menambahkan Token (Token Deletion/Insertion):
Strategi ini melibatkan penghapusan atau penambahan token dalam upaya memperbaiki kesalahan sintaksis. Jika parser menemukan token yang tidak valid, ia dapat menghapus token tersebut dan melanjutkan parsing dari titik berikutnya. Sebaliknya, jika parser menemukan posisi yang memungkinkan untuk menambahkan token yang hilang, ia dapat menambahkan token tersebut untuk melanjutkan parsing.
3. Pemulihan dengan Mengganti Token (Token Replacement):
Strategi ini melibatkan penggantian token yang tidak valid dengan token alternatif yang dianggap valid. Parser mencoba menggantikan token yang salah dengan token yang sesuai dan melanjutkan parsing dari titik tersebut. Pemilihan token pengganti harus mempertimbangkan konteks dan aturan sintaksis yang relevan.
4. Pemulihan dengan Memperbaiki Struktur (Structure Repair):
Strategi ini melibatkan upaya pemulihan yang lebih kompleks dengan melakukan perubahan struktural pada kode yang salah. Parser mencoba memodifikasi atau memperbaiki struktur kode yang tidak valid untuk membuatnya sesuai dengan aturan sintaksis yang benar. Strategi ini sering digunakan dalam pemulihan kesalahan sintaksis yang lebih kompleks, seperti memperbaiki urutan atau tata letak yang salah.
Strategi pemulihan kesalahan yang digunakan oleh parser bergantung pada desain dan implementasi konkret dari parser itu sendiri, serta kebijakan bahasa pemrograman yang terkait. Beberapa parser mungkin menerapkan satu atau beberapa strategi ini secara bersamaan untuk memaksimalkan pemulihan kesalahan dan memberikan pesan error yang informatif kepada pengguna.
Komentar
Posting Komentar