Saya memindahkan pertanyaan ini dari stackoverflow di mana id tidak mendapat jawaban. Kami memiliki pertanyaan serupa apakah JSON biasa :
JSON dan XML keduanya sering disebut sebagai bahasa bebas konteks - keduanya ditentukan terutama oleh tata bahasa formal di EBNF. Namun ini hanya berlaku untuk JSON sebagaimana didefinisikan dalam RFC 4329, bagian 2.2 yang tidak memerlukan keunikan kunci objek (banyak yang mungkin tidak tahu tetapi {"a": 1, "a": 2} adalah JSON yang valid!). Tetapi jika Anda memerlukan kunci unik di JSON atau nama atribut unik dalam XML, ini tidak dapat diungkapkan oleh tata bahasa bebas konteks. Tetapi yang merupakan kelas bahasa JSON dengan kunci unik dan untuk XML yang terbentuk dengan baik (yang menyiratkan nama atribut yang unik?).
Salah satu makalah terbaik yang saya temukan pada subjek ini (Murato et al, 2001: Taksonomi Bahasa Skema XML menggunakan Teori Bahasa Formal ) secara eksplisit mengecualikan kendala integritas seperti kunci / keyrefs dan keunikan untuk diperiksa pada lapisan tambahan. Selain itu, bagian dari XML yang ditentukan oleh Skema XML atau DTD adalah bebas konteks. Tapi bukan set lengkap semua dokumen XML yang terbentuk dengan baik.
Saya pikir otomat stack bertumpuk (= bahasa yang diindeks) harus dapat mengurai JSON dengan batasan kunci yang unik. Untuk XML dapat menyederhanakan pertanyaan ke bahasa S dari semua daftar bilangan bulat unik yang dipisahkan koma. Adakah yang tahu lebih banyak, lebih disukai dengan kutipan?
PS: Algoritma sederhana untuk memutuskan bahasa (di samping bagian bebas konteks) didasarkan pada algoritma pengurutan yang baik. Oleh karena itu harus decidable dalam "waktu linearithmic" dengan O (n log n) kasus terburuk. Saya belum menemukan, apakah kelas kompleksitas misalnya "agak konteks-sensitif" , atau "diindeks" tetapi mungkin sesuatu antara bebas konteks dan peka konteks (?).
x := a+
x := a | x a
^
a^
a