idが応答しないstackoverflowからこの質問を移動しました。JSONが正規であるかどうかについても同様の質問がありました。
JSONとXMLはどちらも頻繁にコンテキストフリー言語と呼ばれます。どちらも主にEBNFの正式な文法で指定されます。ただし、これはRFC 4329、セクション2.2で定義されているオブジェクトキーの一意性を必要としないJSONにのみ当てはまります(多くの人は知らないかもしれませんが、{"a":1、 "a":2}は有効なJSONです)。ただし、JSONの一意のキーまたはXMLの一意の属性名が必要な場合、これはコンテキストなしの文法では表現できません。しかし、一意のキーと整形式のXML(一意の属性名を意味しますか?)を持つJSONの言語クラスはどれですか。
このテーマで見つけた最高の論文の1つ(Murato et al、2001:Taxalomy using XML Schema Languages using Formal Language Theory)は、追加のレイヤーでチェックされるキー/キー参照や一意性などの整合性制約を明示的に除外しています。これに加えて、XMLスキーマまたはDTDによって定義されたXMLのサブセットはコンテキストフリーです。しかし、すべての整形式XMLドキュメントの完全なセットではありません。
ネストされたスタックオートマトン(=インデックス付き言語)は、一意のキー制約を持つJSONを解析できるはずです。XMLの場合、一意の整数のコンマ区切りリストすべての質問を言語Sに単純化できます。できれば引用で誰か知っていますか?
PS:言語を決定するための単純なアルゴリズム(コンテキストのない部分以外)は、適切なソートアルゴリズムに基づいています。したがって、O(n log n)の最悪の場合の「線形時間」で決定できるはずです。複雑度クラスが、たとえば「穏やかにコンテキスト依存」または「インデックス付き」であるかどうかはまだわかりませんが、おそらくコンテキストフリーとコンテキストセンシティブ(?)の間の何かでしょう。
x := a+
x := a | x a
^
a^
a