Skip to main content

Grammar dan Turunan (Derivasi) Dalam Bahasa Pemrograman

Derivasi atau turunan adalah pengaplikasian sejumlah rules untuk menghasilkan suatu statement (sentence).

Contoh: diberikan grammar untuk suatu bahasa pemrograman singkat sebagai berikut:

Suatu derivasi terhadap suatu program dengan bahasa ini dapat berupa: 


Pada contoh di atas, derivasi atau proses perubahan non-terminal symbols menjadi terminal symbols dilakukan berlulang dan bertahap satu per satu hingga semua non-terminal telah berubah menjadi terminal. 

Dengan kata lain, derivasi adalah penerapan rule secara berulang dimulai dari start symbol (elemen tertentu di dalam himpunan non-terminal di dalam grammar) dan berakhir dengan suatu kalimat (seluruh elemennya adalah terminal symbols). Derivasi seperti di atas, dimana pengubahan non terminal menjadi terminal selalu dimulai dari yang paling kiri, disebut leftmost derivation.


Contoh lain (unambiguous) grammar dan disertai left-most dan right-most derivation:
unambiguous grammar

Grammar di samping adalah unambigious, memberikan sebuah parse tree yang unique bagi sentence A = B + C * A, serta dapat merepresentasikan leftmost maupun rightmost derivation seperti berikut:









Leftmost derivation:
leftmost derivation



















Rightmost derivation:
rightmost derivation




























Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan d...