Cara Membedakan Tata Bahasa Ambigu dan Tidak Ambigu

Perbedaan yang menonjol antara tata bahasa ambigu dan tidak ambigu adalah tata bahasa ambigu adalah tata bahasa bebas konteks di mana terdapat string yang dapat memiliki lebih dari satu derivasi paling kiri sedangkan tata bahasa yang tidak ambigu adalah tata bahasa bebas konteks yang setiap string yang valid memiliki paling kiri yang unik. penurunan.

Tata bahasa adalah istilah untuk aturan sintaksis dalam bahasa alami. Pada tahun 1956, ilmuwan komputer memperkenalkan model matematika tata bahasa untuk menulis bahasa komputer. Jika dimungkinkan untuk menurunkan semua string suatu bahasa menggunakan tata bahasa tertentu, maka dikatakan bahwa bahasa tersebut dihasilkan dari tata bahasa tersebut. Tata bahasa bebas konteks adalah salah satu jenis tata bahasa. Tata bahasa ini menghasilkan bahasa bebas konteks. Tata bahasa bebas konteks bisa ambigu atau tidak ambigu. Untuk string tertentu, jika ada dua atau lebih derivasi, tata bahasa tersebut dikatakan ambigu. Untuk string tertentu, jika hanya ada turunan paling kiri yang unik, tata bahasa tersebut dikatakan sebagai tata bahasa yang tidak ambigu.

Topik bahasan kami tentang:

  1. Apa itu Tata Bahasa Ambigu – Definisi, Contoh 2. Apa itu Tata Bahasa Tidak Ambigu – Definisi, Contoh 3. Perbedaan Antara Tata Bahasa Ambigu dan Tidak Ambigu – Perbandingan Perbedaan Kunci

Istilah Utama

Tata Bahasa Ambigu, Tata Bahasa Tidak Ambigu

Yang perlu anda ketahui tentang Tata Bahasa Ambigu?

Sebuah tata bahasa dikatakan ambigu jika terdapat dua atau lebih turunan untuk sebuah string.

Gambar 1: Tata Bahasa Ambigu

Asumsikan bahwa ada tata bahasa yang didefinisikan sebagai berikut.

G= ({S}, {a+b, +, *}, P, S}. Aturan produksinya adalah sebagai berikut. S -> S+S | S*S | a | b. Asumsikan bahwa diperlukan menghasilkan String a+ a*b.

Pertimbangkan, S -> S+S

Mengganti ‘a’ untuk paling kiri S akan memberikan yang berikut.

S-> a +S

Mengganti S*S untuk S adalah sebagai berikut.

S-> a + S*S

Mengganti ‘a’ untuk S paling kiri akan memberikan output di bawah ini.

S -> a+a*S

Mengganti ‘b’ untuk S akan memberikan output berikut.

S -> a + a * b

Ini adalah string yang diperlukan untuk menghasilkan.

Saat menggunakan aturan produksi lainnya, itu akan memberi

S -> S* S

Terapkan S+S ke paling kiri S akan memberikan yang berikut.

S -> S+S * S

Gantikan ‘a’ untuk paling kiri S,

S -> a + S*S

Mengganti ‘a’ untuk S paling kiri,

S -> a + a * S

Mengganti ‘b’ untuk S akan memberikan output berikut.

S -> a + a*b

Sekali lagi, itu menghasilkan string yang diperlukan. Maka dari itu, ada lebih dari satu derivasi untuk menghasilkan string. Maka dari itu, ini adalah tata bahasa yang ambigu.

Yang perlu anda ketahui tentang Tata Bahasa yang Tidak Mendua?

Dalam tata bahasa yang ambigu, string tertentu memiliki turunan paling kiri yang unik. Lihat aturan produksi berikut.

S -> L | a, L -> LS | S

Pertimbangkan aturan S -> L. Ganti LS bukan L.

S -> LS

Pengganti S, untuk L pertama.

S -> SS

Mengganti ‘a’ untuk S paling kiri akan memberikan output di bawah ini.

S -> a S

Mengganti ‘a’ untuk S akan memberikan yang berikut.

S -> aa

Maka dari itu, string memiliki turunan paling kiri yang unik. Jadi, ini adalah tata bahasa yang tidak ambigu.

Perbedaan Antara Tata Bahasa Ambigu dan Tidak Ambigu

Definisi

Tata bahasa ambigu adalah tata bahasa bebas konteks di mana terdapat string yang dapat memiliki lebih dari satu turunan paling kiri atau pohon parse. Tata bahasa yang tidak ambigu adalah tata bahasa bebas konteks di mana setiap string yang valid memiliki turunan paling kiri atau pohon parse yang unik.

Jumlah Derivasi Paling Kiri

Dalam tata bahasa yang ambigu, sebuah string dapat memiliki dua atau lebih turunan paling kiri tetapi, dalam tata bahasa yang tidak ambigu, sebuah string memiliki turunan paling kiri yang unik.

Kata terakhir

Tata bahasa bebas konteks bisa ambigu atau tidak ambigu. Perbedaan antara tata bahasa ambigu dan tidak ambigu adalah tata bahasa ambigu adalah tata bahasa bebas konteks di mana terdapat string yang dapat memiliki lebih dari satu derivasi paling kiri sedangkan tata bahasa yang tidak ambigu adalah tata bahasa bebas konteks di mana setiap string yang valid memiliki derivasi paling kiri yang unik. .

Sumber bacaan:
  1. “Tata Bahasa yang Ambigu.” Wikipedia, Wikimedia Foundation, 17 Juli 2018, Tersedia di sini . 2. “Desain Kompilator | Tata Bahasa yang Ambigu.” GeeksforGeeks, 10 Februari 2018, Tersedia di sini . 3. “Ambiguous Grammar”, Neso Academy, 29 Maret 2017, Tersedia di sini .
Sumber gambar:
  1. “Leftmostderivations jaredwf” Oleh Jaredwf di Wikipedia bahasa Inggris – Ditransfer dari en.wikipedia ke Commons oleh EdwardHades (Domain Publik) melalui Commons Wikimedia

Related Posts