id가 응답이없는 stackoverflow 에서이 질문을 옮겼습니다 . JSON이 규칙적인지 비슷한 질문이있었습니다 .
JSON과 XML은 모두 문맥이없는 언어라고 불리우며 주로 EBNF의 공식 문법으로 지정됩니다. 그러나 이것은 RFC 4329, 섹션 2.2에 정의 된 JSON의 경우에만 해당되며 , 객체 키의 고유성을 요구하지 않습니다 (많은 사람은 모르지만 { "a": 1, "a": 2}는 유효한 JSON입니다!). 그러나 JSON의 고유 키 또는 XML의 고유 속성 이름 이 필요한 경우 컨텍스트없는 문법으로 표현할 수 없습니다. 그러나 고유 키와 올바른 형식의 XML (고유 한 속성 이름을 의미 함)이있는 JSON의 언어 클래스는 무엇입니까?
이 주제에서 내가 찾은 최고의 논문 중 하나 (Murato et al, 2001 : Formal Language Theory를 사용한 XML 스키마 언어의 분류법 )는 추가 계층에서 확인할 키 / 키 참조 및 고유성과 같은 무결성 제약 조건을 명시 적으로 제외합니다. 이 외에도 XML 스키마 또는 DTD에 의해 정의 된 XML의 하위 집합에는 컨텍스트가 없습니다. 그러나 제대로 구성된 모든 XML 문서의 전체 세트는 아닙니다.
중첩 스택 오토 마톤 (= 색인 언어)이 고유 키 제약 조건으로 JSON을 구문 분석 할 수 있어야한다고 생각합니다. XML의 경우 쉼표로 구분 된 모든 고유 정수 목록의 언어 S에 대한 질문을 단순화 할 수 있습니다. 누구나 인용문으로 더 많이 알고 있습니까?
추신 : 언어를 결정하는 간단한 알고리즘 (문맥이없는 부분 제외)은 좋은 정렬 알고리즘을 기반으로합니다. 따라서 최악의 경우 O (n log n) 인 "선형 시간"으로 결정할 수 있어야합니다. 복잡성 클래스가 "가벼운 컨텍스트 인식" 인지 또는 "인덱싱 된" 인지에 대해서는 아직 알지 못했지만 컨텍스트가없는 것과 컨텍스트에 민감한 (?) 사이에있을 수 있습니다.
편집 : 어쩌면 나는 더 이론적 인 컴퓨터 과학자들의 질문을 더 잘 재구성 할 수 있습니다. Backus-Naur-Form에서 반복적으로 표현할 수있는 모든 언어의 클래스 CFL ( )이 . 나는 "고유의 인스턴스가 반복에게"연산자를 도입하면 지금은 연산 능력으로 무엇을 얻는가 그래서, 의 순서입니다 단말기의 다른 시퀀스의 경우 각 요소의 결과는?x := a+ x := a | x a^a^a