Generalisasi dari metode turunan ekspresi reguler ke tata bahasa Brzozowski?

18

Metode derivatif Brzozowski adalah teknik yang sangat cantik untuk membangun automata deterministik dari ekspresi reguler dengan cara aljabar yang baik. Saya telah mengerjakan beberapa generalisasi lucu dari teknik ini untuk menangani beberapa kelas tata bahasa yang lebih besar, tetapi algoritmanya cukup mudah sehingga tampaknya sangat mungkin telah ditemukan sebelumnya. Tetapi referensi Googling untuk keturunan teknik ini tampaknya tidak banyak berubah. Adakah yang tahu sesuatu?

Neel Krishnaswami
sumber
2
Saya cukup ingin tahu tentang kelas tata bahasa apa yang Anda pikirkan. Tentang keturunan, teknik Antimirov, yang menghasilkan automata non-deterministik, sangat bagus: Turunan sebagian dari ekspresi reguler dan konstruksi otomat terbatas , TCS 155 (2), 1996, ( dx.doi.org/10.1016/0304-3975(95 ) 00182-4 ).
Sylvain
maksud Anda generalisasi ke bahasa yang lebih kompleks, seperti reguler <bebas konteks <sensitif konteks <...?
s8soj3o289
Saya telah melihat subsistem CFG kira-kira di lingkungan VPL, kebanyakan.
Neel Krishnaswami
... tapi rangkaian turunannya tidak terbatas. Dan memang jika Anda menginginkan sesuatu yang deterministik seperti dengan metode Brzozowski, Anda mungkin terbatas pada DCFL (jadi saya bayangkan itu masuk akal untuk VPL).
Sylvain

Jawaban:

7

Dalam Total Parser Combinators (ICFP 2010) saya menggunakan turunan Brzozowski untuk menetapkan bahwa keanggotaan bahasa dapat dipilih untuk kelas tertentu dari tata bahasa yang berpotensi tak terbatas.

Nils Anders Danielsson
sumber
12

Anda mungkin tertarik dengan makalah ini:

Yacc is Dead oleh Matthew Might dan David Darais, 2010

Kami menyajikan dua pendekatan baru untuk parsing bahasa bebas konteks. Pendekatan pertama didasarkan pada perpanjangan turunan Brzozowski dari ekspresi reguler ke tata bahasa bebas konteks. Pendekatan kedua didasarkan pada generalisasi derivatif ke kombinator parser. Hasil dari teknik ini adalah parsing library yang kecil (kurang dari 250 baris), mudah diimplementasikan yang mampu mem-parsing tata bahasa bebas konteks sewenang-wenang ke dalam hutan parse malas. Implementasi untuk Scala dan Haskell disediakan. Eksperimen awal dengan S-Expressions menguraikan jutaan token per detik, yang menunjukkan teknik ini cukup efisien untuk digunakan dalam praktik.

Juga menarik minat:

Mikhail Glushenkov
sumber
Judul kertas yang sangat lucu! :-)
Dai Le
7

Kembali di pertengahan 80-an ketika saya sedang mengerjakan parser pendakian rekursif dan memfaktorkan tata bahasa, saya mulai dengan mendefinisikan turunan sebagian dari tata bahasa.

Banyak teori bagus di sana.

Apakah Anda memiliki pertanyaan spesifik?

GHR
sumber
Saat ini saya hanya memancing untuk pekerjaan terkait. Karena saya telah memikirkan sebagian besar parser keturunan rekursif, jadi saya akan menemukan aplikasi untuk parsing gaya LR seperti yang Anda sarankan sangat menarik. Bisakah Anda mengarahkan saya ke salah satu kertas Anda?
Neel Krishnaswami