Я перемістив це запитання з stackoverflow, де я не отримав відповідей. У нас було подібне питання, чи регулярно JSON :
І JSON, і XML обидва часто називаються безконтекстними мовами - обидва вони визначаються в основному формальною граматикою в EBNF. Однак це справедливо лише для JSON, визначеного в RFC 4329, розділ 2.2, який не вимагає унікальності клавіш об'єкта (багато хто може не знати, але {"a": 1, "a": 2} є дійсним JSON!). Але якщо вам потрібні унікальні ключі в JSON або унікальні імена атрибутів у XML, це не може бути виражено безконтекстними граматиками. Але який це мовний клас JSON з унікальними ключами та для добре сформованого XML (що передбачає унікальні назви атрибутів?).
Один з найкращих робіт, які я знайшов на цю тему (Murato et al, 2001: Таксономія мов XML-схеми з використанням теорії формальної мови ) явно виключає обмеження цілісності, такі як ключі / keyrefs та унікальність для перевірки на додатковому шарі. Крім цього, підмножина XML, визначена XML-схемою або DTD, не є контекстною. Але не повний набір усіх добре сформованих XML-документів.
Я думаю, що вкладений автоматичний стек (= індексована мова) повинен мати можливість аналізувати JSON з унікальним обмеженням ключів. Для XML можна спростити питання до мови S усіх списків, розділених комами, унікальних цілих чисел. Хтось знає більше, бажано з цитатами?
PS: Простий алгоритм визначення мов (поруч із контекстною частиною) заснований на хорошому алгоритмі сортування. Тому його слід вирішити в "лінійноактичний час" з найгіршим випадком O (n log n). Я ще не з'ясував, чи є клас складності, наприклад, "м'яко- залежно від контексту" , або "індексований", але, ймовірно, щось середнє між контекстом і не залежно від контексту (?).
x := a+
x := a | x a
^
a^
a