Baru-baru ini saya bertanya-tanya apa yang akan terjadi jika kita membiarkan tata bahasa bebas konteks memiliki jumlah aturan yang tak terbatas. Jelas, jika kita mengizinkan seperangkat aturan tak terbatas seperti itu, setiap bahasa pada beberapa alfabet dapat dijelaskan oleh CFG dengan . Tetapi bagaimana jika kita membatasi ke set aturan seperti itu yang dapat dibuat oleh tata bahasa bebas konteks?
Untuk tujuan itu, diberikan satu set nonterminals dan terminal , mari kita lihat aturan bukan sebagai elemen , tetapi sebagai string di atas alfabet . Sekarang pertanyaan saya adalah, jika kita mendefinisikan aturan tak terbatas CFG menjadi tuple mana
- adalah seperangkat nonterminals yang terbatas
- adalah alfabet terbatas
- adalah seperangkat aturan dari bentuk dengan , sedemikian rupa sehingga ada beberapa CFG lebih dari R ( N , Σ ) dengan R = L ( G ′ )
- adalah nonterminal awal
dan kita mendefinisikan untuk CFGs aturan yang tak terbatas seperti seperti hal itu dilakukan untuk CFGs, apa hubungan antara kelas bahasa yang dihasilkan oleh CFGs aturan tak terbatas (panggilan mari kelas i r C F ), kelas pada konteks bahasa bebas C F dan kelas R E ?
Jelas, kita memiliki , tetapi apakah i r C F setara dengan salah satu kelas ini (atau beberapa kelas lain)?
sumber
Jawaban:
Misalkan kita mengambil metagrammar dan memasukkannya dengan awalan dua simbol. Dengan kata lain, untuk setiap A ∈ N membangun G ′ A , turunan kiri G ′ di atas string A → . Yang akan menghasilkan (terbatas) set (terbatas) metagrammars, masing-masing memproduksi semua (mungkin tak terbatas) produksi untuk beberapa A ∈ N .G′ A ∈ N G′SEBUAH G′ A→ A∈N
Sekarang, bangun tata bahasa , yang aturannya adalah penyatuan semua aturan dalam tata bahasa G ′ A (dengan non-terminal diganti namanya untuk menghindari tabrakan), bersama dengan A → S G ′ A untuk setiap G ′ A , di mana S G ' A adalah awal non-terminal untuk G ' A . Non-terminal untuk G ″ termasuk N dan semua non-terminal untuk setiap G ′ A ; start non-terminal adalah start non-terminal dari GG′′ G′A A→SG′A G′A SG′A G′A G′′ N G′A G , Dan terminal untuk adalah justru terminal untuk G . Saya menegaskan (tanpa bukti) bahwa G ″ adalah tata bahasa yang terbatas untuk bahasa yang sama, karena proses derivasi tidak dipengaruhi oleh asal-usul aturan; itu hanya penggantian string alfabet.G′′ G G′′
Jika garis besar bukti di atas valid, dan i r C F adalah sama.CF irCF
Seperti yang saya singgung dalam komentar, ada contoh yang lebih menarik dari tata bahasa dua tingkat, termasuk tata bahasa Van Wijngaarden dan berbagai upaya yang telah dilakukan untuk menciptakan formalisme yang lebih mudah dikelola tanpa kehilangan semua kekuatan tambahan.
sumber