Ich habe diese Frage aus dem Stackoverflow verschoben, wo id keine Antworten erhielt. Wir hatten eine ähnliche Frage, ob JSON regelmäßig ist :
JSON und XML werden häufig als kontextfreie Sprachen bezeichnet - beide werden hauptsächlich durch eine formale Grammatik in EBNF spezifiziert. Dies gilt jedoch nur für JSON gemäß RFC 4329, Abschnitt 2.2, für das keine Eindeutigkeit der Objektschlüssel erforderlich ist (viele wissen möglicherweise nicht, aber {"a": 1, "a": 2} ist gültiges JSON!). Wenn Sie jedoch eindeutige Schlüssel in JSON oder eindeutige Attributnamen in XML benötigen, kann dies nicht durch eine kontextfreie Grammatik ausgedrückt werden. Aber welches ist die Sprachklasse von JSON mit eindeutigen Schlüsseln und für wohlgeformtes XML (was impliziert eindeutige Attributnamen?).
Eine der besten Arbeiten, die ich zu diesem Thema gefunden habe (Murato et al., 2001: Taxonomie von XML-Schemasprachen unter Verwendung der formalen Sprachtheorie ), schließt Integritätsbeschränkungen wie Schlüssel / Schlüsselreferenzen und Eindeutigkeit, die auf einer zusätzlichen Ebene überprüft werden sollen, ausdrücklich aus. Außerdem ist die durch ein XML-Schema oder eine DTD definierte Teilmenge von XML kontextfrei. Aber nicht der vollständige Satz aller wohlgeformten XML-Dokumente.
Ich denke, ein verschachtelter Stapelautomat (= indizierte Sprache) sollte in der Lage sein, JSON mit einer eindeutigen Schlüsselbeschränkung zu analysieren. Für XML kann die Frage auf die Sprache S aller durch Kommas getrennten Listen eindeutiger Ganzzahlen vereinfacht werden. Weiß jemand mehr, vorzugsweise mit Zitaten?
PS: Ein einfacher Algorithmus zur Entscheidung der Sprachen (neben dem kontextfreien Teil) basiert auf einem guten Sortieralgorithmus. Daher sollte es in "linearithmischer Zeit" mit O (n log n) Worst Case entscheidbar sein. Ich habe noch nicht herausgefunden, ob die Komplexitätsklasse zum Beispiel "leicht kontextsensitiv" oder "indiziert" ist, aber wahrscheinlich etwas zwischen kontextfrei und kontextsensitiv (?).
x := a+
x := a | x a
^
a^
a