JSON은 정규 언어입니까?


19

JSON 사양이 일반 언어를 정의 했는지 궁금합니다 . 충분히 간단 해 보이지만 직접 증명하는 방법을 모르겠습니다.

내가 묻는 이유는 정규 표현식을 사용하여 JSON을 효과적으로 파싱 할 수 있는지 궁금해하기 때문입니다.

담당자가 충분한 사람이 및 태그를 작성해 주시겠습니까?


6
태그 [json]을 TCS SE에서 태그 할 가치가 없어 보이기 때문에 제거했습니다.
— Tsuyoshi Ito

@Tsuy, 좋은 소리. 분명히 나는 ​​사이트의 열렬한 사용자가 아니므로 더 잘 알고 있다고 확신합니다.
— jjnguy

1
정규식 구현은 종종 일반 언어 이상으로 일치합니다. 예를 들어 대부분의 구현에서 미리보기를 사용하면 올바르게 받아들이고 아래 언급 된 문제를 해결할 수 있습니다. [ n x ] nanbn[nx]n
— Xodarap

답변:


28

이후 하지 일반 언어 둘 이후 JSON 없다 모든 유효 입력 . 제대로 모든 입력 거부에 마찬가지로, 정규 표현식 파서 것 여기서 정규식으로 할 수있다.[ n 5 ] n n [ m 4 ] n m ≠ nanbn[n5]nn[m4]nm≠n

따라서 JSON은 규칙적이지 않습니다.


궁금한 점은 여기서 사용 된 위첨자 / 괄호 표기법은 무엇입니까?
— jchook

31

아니요, 규칙적이지 않습니다. 균형 구분 기호를 임의로 포함 할 수 있으므로 컨텍스트가 없어야합니다.

예를 들어, 배열 배열의 배열을 고려하십시오.

[ [ [ 1, 2], [2, 3] ] , [ [ 3, 4], [ 4, 5] ] ] 

분명히 진정한 정규 표현식으로 구문 분석 할 수 없었습니다.


8
머리카락을 엄밀하게 분할하기 위해 정수 배열의 모든 배열 배열의 JSON 표현 은 규칙적입니다.
— Charles Stewart

16
그런 다음 행복 할 때까지 "배열"을 반복해서 추가하십시오. ;-)
— Marc Hamann

1
표준 JSON은 컨텍스트가 없지만 대부분의 구현은 고유 키만 지원합니다. 답변하지 않은 질문을 stackoverflow에서 cstheory.stackexchange.com/questions/4668/… (으)
— Jakob

나는 "적어도 맥락이 없다"고 말했다.
— Marc Hamann

@CharlesStewart의 의견을 확장하면 "엄격한 최대 깊이를 가진 JSON이 일반 언어"입니까? 아니면 JSON의 다른 기능으로 이것을 방지합니까?
— jchook
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.