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]nmn

따라서 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.