Me mudé a esta pregunta desde StackOverflow donde id obtuvo ninguna respuesta. Tuvimos una pregunta similar si JSON es regular :
JSON y XML son llamados frecuentemente para ser lenguajes libres de contexto; ambos se especifican principalmente por una gramática formal en EBNF. Sin embargo, esto solo es cierto para JSON como se define en RFC 4329, sección 2.2, que no requiere la unicidad de las claves de objeto (muchos pueden no saberlo, pero {"a": 1, "a": 2} es JSON válido). Pero si necesita claves únicas en JSON o nombres de atributos únicos en XML, esto no puede expresarse mediante gramáticas libres de contexto. Pero, ¿cuál es la clase de lenguaje de JSON con claves únicas y para XML bien formado (que implica nombres de atributo únicos?).
Uno de los mejores trabajos que encontré sobre este tema (Murato et al, 2001: Taxonomía de los lenguajes de esquema XML usando la teoría del lenguaje formal ) excluye explícitamente las restricciones de integridad, como las claves / keyrefs y la unicidad para verificar en una capa adicional. Además de esto, el subconjunto de XML definido por un Esquema XML o por un DTD no tiene contexto. Pero no el conjunto completo de todos los documentos XML bien formados.
Creo que un autómata de pila anidada (= lenguaje indexado) debería poder analizar JSON con una restricción de clave única. Para XML puede simplificar la pregunta al lenguaje S de todas las listas separadas por comas de enteros únicos. ¿Alguien sabe más, preferiblemente con citas?
PD: un algoritmo simple para decidir los idiomas (además de la parte sin contexto) se basa en un buen algoritmo de clasificación. Por lo tanto, debe ser decidible en "tiempo linealitmico" con O (n log n) en el peor de los casos. Todavía no he descubierto si la clase de complejidad es, por ejemplo, "ligeramente sensible al contexto" o "indexada", pero probablemente algo entre libre de contexto y sensible al contexto (?).
x := a+ x := a | x a^a^a