JSON Düzenli Bir Dil mi?


19

JSON spesifikasyonunun normal bir dil tanımlayıp tanımlamadığını merak ediyordum . Yeterince basit görünüyor, ama kendimi nasıl kanıtlayacağımdan emin değilim.

Sormamın nedeni, JSON'u etkili bir şekilde pars yapmak için düzenli ifadeler kullanıp kullanamayacağını merak etmemdi.

Yeterli temsilcisi olan biri benim için ve etiketlerini oluşturabilir mi?


6
[Json] etiketini kaldırdım çünkü TCS SE'de bir etikete değmez gibi görünüyor.
Tsuyoshi Ito

@Tsuy, kulağa hoş geliyor. Açıkçası ben sitenin hevesli bir kullanıcı değilim, bu yüzden daha iyi biliyorum eminim.
jjnguy

1
Normal ifade uygulamalarının genellikle normal dillerden daha fazla eşleştiğini unutmayın. Örneğin, kabul edecek Bir çok uygulamada, içinde lookaheads kullanabilir çözme doğru [ n x ] n sorun, diğerleri aşağıda belirtilen. anbn[nx]n
Xodarap

Yanıtlar:


28

Yana değil düzenli dil, ne olduğunu JSON, çünkü [ n 5 ] n herhangi biri için geçerli bir girdidir n . Düzgün herhangi bir giriş reddetmeye Aynı şekilde, düzenli ifade ayrıştırıcı olurdu [ m 4 ] n nereye m n Normal ifadeler konusunda yapamaz.anbn[n5]nn[m4]nmn

Bu nedenle, JSON düzenli değildir.


Meraklı, burada kullanılan üst simge / parantez notasyonu nedir?
jchook

1
@jchook Üst simge gösterimi 'tekrarlanan' anlamına gelir. Yani olurdu bir tekrarlanan n defa. Benzer şekilde, gösterim [ N araçları [ tekrar n kere. Köşeli parantezlerin özel bir anlamı yoktur. Normal bir dil, her iki tarafta kaç köşeli parantez olduğunu 'sayamaz', bu nedenle her iki tarafın da aynı sayıda parantez olup olmadığını söyleyemez. anan[n[n
Nick ODell

31

Hayır, düzenli değil. Dengeli sınırlayıcıların keyfi olarak gömülmesine izin verdiği için, en azından bağlamsız olmalıdır.

Örneğin, bir dizi dizi düşünün:

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

Açıkçası bunu gerçek düzenli ifadelerle çözümleyemediniz.


8
Küt bölünmüş kıllar için, tamsayılar Dizilerin dizileri her Dizilerin JSON gösterimleri ise düzenli.
Charles Stewart

16
Sonra mutlu olana kadar "dizileri" özyinelemeli eklemeye devam edin. ;-)
Marc Hamann

1
Standart JSON bağlam içermez, ancak çoğu uygulama yalnızca benzersiz anahtarları destekler. Yanıtlanmamış sorumu stackoverflow'dan şu konuma taşıdım
Jakob

"En azından bağlamsız" dediğimi unutmayın.
Marc Hamann

@ CharlesStewart'ın yorumunu genişletmek, "Sıkı bir maksimum derinliğe sahip JSON normal bir dildir" anlamına mı geliyor? Yoksa JSON'un diğer özellikleri bunu engelliyor mu?
jchook
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.