Bahasa bebas konteks deterministik (DCFL) dan bahasa pushdown tampak (VPL) keduanya set bahasa formal antara bahasa bebas konteks (CFL) dan bahasa biasa (REG). Apakah ada notasi yang dapat dibaca yang dapat diekspresikan dalam ASCII sederhana seperti Backus-Naur-Form untuk CFL dan ekspresi reguler untuk REG?
fl.formal-languages
Jakob
sumber
sumber
Jawaban:
Mengenai DCFL, saya tidak melihat notasi yang lebih baik daripada fungsi transisi dari automaton pushdown deterministik, yaitu menulis secara eksplisit aturan bentuk dengan menyatakan dalam , tumpukan simbol, urutan simbol stack, dan simbol input atau string kosong. Notasi itu sendiri tidak memaksakan determinisme, tetapi mudah diperiksa. Dengan menggunakan jenis notasi tata bahasa bebas konteks (seperti BNF), Anda akan mengalami masalah karena DCFL adalah subkelas CFL yang tepat, dan seperti dicatat oleh DaniCL, Anda tidak dapat memutuskan secara umum diberi CFG apakah bahasanya ditentukan deterministik.q , q ′ Q z γ aq, z, a → q′, γ q, q′ Q z γ Sebuah
Mengenai VPLS, sebuah tanda kurung / kurung-gaya untuk CFGs akan cukup baik, dengan aturan bentuk di mana adalah non-terminal, simbol panggilan, simbol kembali, dan suatuA→aαb A a b α
urutanyang teratur ekspresi lebih dari simbol dan nonterminals internal campuran. Karena setiap VPL juga merupakan (D) CFL, Anda juga dapat menggunakan kembali notasi di atas untuk pushdown automata dan memeriksa apakah operasi stack cocok dengan panggilan dan pengembalian, atau menuliskan hubungan transisi dari automaton kata bersarang (yang akan kurang redundan) .A a b αSunting: kalau dipikir-pikir itu, notasi untuk skema XML, seperti sintaks kompak RelaxNG --- yang merupakan notasi ASCII ---, dapat dengan mudah digunakan untuk VPL. Anda akan hanya perlu untuk menegakkan beberapa konvensi penamaan untuk tag, misalnya tag pembuka "<ab>" untuk panggilan simbol pencocokan tag penutup "</ ab>" untuk simbol kembali .ba b
sumber
Untuk menemukan representasi kanonik, pertimbangkan hal berikut: kelas DCFL setara dengan kelas bahasa yang dihasilkan oleh tata bahasa LR (k), yang lagi-lagi setara dengan LR (1). Ini berarti Anda dapat menemukan tata bahasa LR (1) untuk setiap DCFL. Tentu saja, tata bahasa LR (1) masih merupakan tata bahasa bebas konteks, tetapi dengan properti khusus: dari tata bahasa LR (1), kita dapat dengan mudah membangun tabel parse untuk memandu parser deterministik (dengan lookahead dari 1 simbol, karenanya LR (1)). Tabel parse ini akan menjadi representasi lain, meskipun agak kurang dapat dibaca.
Omong-omong, ingatlah bahwa tidak dapat diputuskan apakah bahasa bebas konteks tertentu bersifat deterministik (Teorema Greibach).
Saya harus mengakui bahwa saya belum pernah mendengar tentang VPL.
sumber