Apakah ada ekstensi ekspresi reguler yang menangkap konteks bahasa bebas?

25

Dalam banyak makalah yang melibatkan tata bahasa bebas konteks (CFG), contoh-contoh tata bahasa yang disajikan di sana sering mengakui karakterisasi yang mudah dari bahasa yang mereka hasilkan. Sebagai contoh:

SaaSb
S

menghasilkan {a2ibi|i0} ,

SaSb
SaaSb
S

menghasilkan {aibjij0} , dan

SaSa
SbSb
S

menghasilkan {wwRw(a|b)} , atau ekuivalen {((a|b))1((a|b))2p1=p2R} (di mana p1 mengacu ke bagian ditangkap oleh (...)1 ).

Contoh di atas semua dapat dihasilkan dengan menambahkan indeks ( ai ), batasan sederhana pada indeks ini ( i>j ) dan pencocokan pola dengan ekspresi reguler. Ini membuat saya bertanya-tanya apakah semua bahasa bebas konteks dapat dihasilkan oleh beberapa ekstensi dari ekspresi reguler.

Apakah ada ekstensi ekspresi reguler yang dapat menghasilkan semua atau beberapa bagian signifikan dari konteks bahasa bebas?

Alex ten Brink
sumber
3
Amati bahwa menambahkan indeks dan kendala yang terlalu kuat: Anda akan dapat menentukan , yang bukan CFL. anbncn
Shaull

Jawaban:

34

Ya ada. Tetapkan ekspresi bebas konteks menjadi istilah yang dihasilkan oleh tata bahasa berikut:

g::=ϵEmpty string|cCharacter c in alphabet Σ|ggConcatenation|Failing pattern|ggDisjunction|μα.gRecursive grammar expression|αVariable expression

Ini semua konstruktor untuk bahasa reguler kecuali bintang Kleene, yang digantikan oleh operator titik tetap umum μα.ggμα.ϵgα

Interpretasi dari ekspresi bebas konteks memerlukan akuntansi untuk interpretasi variabel bebas. Jadi tentukan lingkungan menjadi peta dari variabel ke bahasa (yaitu, himpunan bagian dari ), dan biarkan menjadi fungsi yang berperilaku seperti pada semua input kecuali , dan yang mengembalikan bahasa untuk .Σ [ ρ | α : L ] ρ α L αρΣ[ρ|α:L]ραLα

Sekarang, tentukan interpretasi dari ekspresi bebas konteks sebagai berikut:

[[ϵ]]ρ={ϵ}[[c]]ρ={c}[[g1g2]]ρ={w1w2|w1[[g1]]ρw2[[g2]]ρ}[[]]ρ=[[g1g2]]ρ=[[g1]]ρ[[g2]]ρ[[α]]ρ=ρ(α)[[μα.g]]ρ=nNLnwhereL0=Ln+1=Ln[[g]][ρ|α:Ln]

Menggunakan teorema Knaster-Tarski, mudah untuk melihat bahwa penafsiran adalah yang paling tidak diperbaiki dari ekspresi.μα.g

Sangat mudah (meskipun tidak sepenuhnya sepele) untuk menunjukkan bahwa Anda dapat memberikan ekspresi bebas konteks yang berasal dari bahasa yang sama dengan tata bahasa bebas konteks apa pun, dan sebaliknya. Ketidakpastian timbul dari kenyataan bahwa ekspresi bebas konteks telah menyarangkan titik tetap, dan tata bahasa bebas konteks memberi Anda satu titik tetap atas tupel. Ini membutuhkan penggunaan lemma Bekic, yang mengatakan dengan tepat bahwa titik tetap bersarang dapat dikonversi menjadi titik tetap tunggal atas suatu produk (dan sebaliknya). Tapi itu satu-satunya kehalusan.

EDIT: Tidak, saya tidak tahu referensi standar untuk ini: Saya mengerjakannya untuk kepentingan saya sendiri. Namun, ini adalah konstruksi yang cukup jelas sehingga saya yakin ini telah ditemukan sebelumnya. Beberapa Googling biasa mengungkapkan karya Joost Winter, Marcello Bonsangue, dan makalah Jan Rutten baru -baru ini, Bahasa Bebas Konteks, secara bilangan bulat , di mana mereka memberikan varian definisi ini (mengharuskan semua titik tetap untuk dijaga) yang mereka juga sebut sebagai ekspresi bebas konteks.

Neel Krishnaswami
sumber
Ini sangat mengagumkan. Apakah ada nama atau referensi standar untuk ini?
Alex ten Brink
5
Arto Salomaa membahas ini dalam bukunya "Bahasa Resmi" pada tahun 1973. Dia menyebut mereka "Ekspresi Seperti Biasa".
Tim Schaeffer
3

Ada pertanyaan terkait erat (dan beberapa jawaban) pada MathOverflow tentang bahasa yang fungsi-fungsinya menghasilkan holonomis .

Yang menarik, definisi Neel tentang semantik atas sesuai persis dengan bukti (konstruktif) dari keberadaan solusi Spesies untuk persamaan Spesies rekursif melalui teorema Spesies implisit. Sayangnya, garis besar buktinya juga harus mengandung kesalahan yang halus, karena ada kasus di mana hal-hal menjadi 'tak terbatas'. Dengan kata lain, ada kondisi pada Jacobian dari transformasi yang didefinisikan oleh tata bahasa menjadi non-tunggal yang diperlukan. Ini mungkin mengapa Bonsangue-Rutten memerlukan poin tetap untuk dijaga, sebagai salah satu cara untuk memastikan kondisi ini pada Jacobian.μ

Jacques Carette
sumber
AFAICT, Winter et al hanya membutuhkan penjagaan untuk memastikan Anda dapat mengambil turunan Brzozowski dari dengan mengambil turunan dari . μα.g[μα.g/α]g
Neel Krishnaswami
1

Kami baru saja menerbitkan garis besar kerangka kerja yang akan melakukan hal itu. Lihat di bawah comp.compiler , di mana saya mengirim pemberitahuan beserta beberapa tautan.

Perkembangan baru bekerja dari Chomsky-Schuetzenberger Theorem dan dapat dianggap sebagai penyelesaian dari hasil ini. Chomsky, sendiri, telah diberitahu tentang perkembangan dan menunjukkan keinginan untuk "mengejar ketinggalan".

Seiring dengan perkembangan ini, kami juga menetapkan kesetaraan dua formulasi terpisah untuk ekspresi bebas konteks - yang merupakan perpanjangan / penyelesaian dari bentuk mu-kalkulus "titik paling tidak tetap" (awalnya oleh Gruska, Yntema dan McWhirter) - yang menerima semacam rumusan akhir pada tahun 2014 - dan yang lainnya diterbitkan pada tahun 2008.

NinjaDarth
sumber
4
Harap sertakan semua informasi yang relevan dalam jawaban itu sendiri. "Lihat di bawah comp.compiler" adalah jawaban yang tidak membantu sekarang, dan itu akan sama sekali tidak berguna dalam beberapa bulan.
Emil Jeřábek mendukung Monica
Itu benar-benar salah. Comp.compiler (tidak seperti situs ini dan blog lain, omong-omong) diarsipkan secara permanen. Di sana Anda akan menemukan semua detail yang Anda butuhkan. Ada banyak tautan yang dapat ditemukan di sana, di artikel yang paling baru diposting, juga. Juga, tidak seperti situs blog, blog ini terbuka untuk orang luar dan bermanfaat bagi audiens yang lebih luas. Anda seharusnya tidak mengalami kesulitan menemukan apa pun di USENET - di mana pertanyaan seperti ini harus ditangani dan dibahas. Jika Anda mengalami kesulitan, inilah tautannya. groups.google.com/forum/#!topic/comp.compilers/YCa5jHUR1iQ
NinjaDarth
2
Masalahnya bukan bahwa itu tidak diarsipkan, tetapi bahwa arsipnya luas. Ketika saya mencari arsip sekarang saya dapat menemukan posting Anda di suatu tempat dekat bagian atas, tetapi ketika seseorang akan melihat jawaban ini beberapa bulan atau tahun ke depan, mereka tidak akan tahu di mana harus mulai menggali. Sombong dan kasar membuat pembaca melakukan pencarian yang panjang dan tidak dapat diandalkan ketika Anda bisa mengarahkan mereka ke lokasi yang lebih spesifik. Sekarang, saya melakukannya untuk Anda. Butuh waktu 30 detik. Anda bisa melakukannya sendiri.
Emil Jeřábek mendukung Monica