क्या JSON एक नियमित भाषा है?


19

मैं सोच रहा था कि JSON कल्पना एक नियमित भाषा को परिभाषित करती है। यह काफी सरल लगता है, लेकिन मुझे यकीन नहीं है कि इसे कैसे साबित किया जाए।

मेरे द्वारा पूछे जाने का कारण यह है कि मैं सोच रहा था कि क्या कोई प्रभावी ढंग से JSON को नियमित रूप से अभिव्यक्त कर सकता है।

क्या कोई पर्याप्त प्रतिनिधि हो सकता है कृपया मेरे लिए टैग्स और बनाएं ?


6
मैंने टैग [json] को हटा दिया क्योंकि यह TCS SE पर टैग के लायक नहीं लगता।
त्सुयोशी इतो

@ अच्छा, अच्छा लगता है। जाहिर है मैं साइट का शौक़ीन उपयोगकर्ता नहीं हूं, इसलिए मुझे यकीन है कि आप बेहतर जानते होंगे।
jjnguy

1
याद रखें कि रेगेक्स कार्यान्वयन अक्सर नियमित भाषाओं से अधिक मेल खाते हैं। उदाहरण के लिए आप अधिकांश प्रयोगों, जो स्वीकार करेंगे में lookaheads उपयोग कर सकते हैं सही ढंग से, को सुलझाने [ एन एक्स ] n समस्या दूसरों नीचे उल्लेख। anbn[nx]n
१६:

जवाबों:


28

के बाद से है नहीं एक नियमित रूप से भाषा, न तो है JSON, के बाद से [ एन 5 ] n किसी के लिए मान्य इनपुट है n । इसी तरह, आपके नियमित अभिव्यक्ति पार्सर को किसी भी इनपुट [ एम 4 ] एन को ठीक से अस्वीकार करना होगाanbn[n5]nn[m4]n जहां जो आप नियमित अभिव्यक्ति के साथ ऐसा नहीं कर सकते।mn

इसलिए, JSON नियमित नहीं है।


जिज्ञासु, यहाँ क्या सुपरस्क्रिप्ट / ब्रैकेट नोटेशन का उपयोग किया गया है?
jchook

1
@jchook सुपरस्क्रिप्ट नोटेशन का अर्थ है 'बार-बार।' तो होगा एक दोहराया n बार। इसी तरह, संकेतन [ एन का अर्थ है [ बार-बार एन । कोष्ठक का कोई विशेष अर्थ नहीं है। एक नियमित भाषा प्रत्येक पक्ष में कितने कोष्ठक 'गणना' नहीं कर सकती है, इसलिए वे यह नहीं बता सकते हैं कि क्या दोनों पक्षों में समान संख्या में कोष्ठक हैं। anan[n[n
निक ओडेल

31

नहीं, यह नियमित नहीं है। चूंकि यह संतुलित सीमांकक की मनमानी एम्बेडिंग की अनुमति देता है, इसलिए इसे कम से कम संदर्भ-मुक्त होना चाहिए।

उदाहरण के लिए, सरणियों के सारणियों की एक सरणी पर विचार करें:

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

स्पष्ट रूप से आप सच्चे नियमित भावों के साथ पार्स नहीं कर सकते।


8
कुंठित विभाजन बाल करने के लिए, पूर्णांक सरणियों के सरणियों के सभी सरणियों के JSON निरूपण है नियमित रूप से।
चार्ल्स स्टीवर्ट

16
फिर जब तक आप खुश नहीं होते हैं तब तक "रिकार्श" के "एरेज़" को जोड़ते रहें। ;-)
मार्क हैमन

1
मानक JSON संदर्भ-मुक्त है, लेकिन अधिकांश कार्यान्वयन केवल अद्वितीय कुंजियों का समर्थन करते हैं। मैंने अपने अनुत्तरित प्रश्न को stackoverflow से: cstheory.stackexchange.com/questions/4668/…
Jakob

ध्यान दें कि मैंने कहा "कम से कम संदर्भ-मुक्त"।
मार्क हैमन

@ चार्ल्सस्टार्ट की टिप्पणी पर विस्तार करते हुए, क्या इसका मतलब यह है कि "JSON एक सख्त अधिकतम गहराई के साथ एक नियमित भाषा है"? या JSON की अन्य विशेषताएं इसे रोकती हैं?
jchook
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.