Zastanawiałem się, czy specyfikacja JSON definiuje zwykły język. Wydaje się to dość proste, ale nie jestem pewien, jak sam to udowodnić.
Powodem, dla którego pytam, jest to, że zastanawiałem się, czy można użyć wyrażeń regularnych, aby skutecznie przetworzyć JSON.
Czy ktoś z wystarczającą liczbą przedstawicieli może dla mnie utworzyć tagi json i zwykły język ?
Odpowiedzi:
Ponieważ nie jest językiem regularnym, JSON również nie jest, ponieważ [ n 5 ] n jest poprawnym wejściem dla dowolnego n . Podobnie, twój parser wyrażeń regularnych musiałby poprawnie odrzucać wszelkie dane wejściowe [ m 4 ] n, gdzie m ≠ n, których nie możesz zrobić z wyrażeniami regularnymi.anbn [n5]n n [m4]n m≠n
Dlatego JSON nie jest regularny.
źródło
Nie, to nie jest regularne. Ponieważ pozwala na dowolne osadzanie zrównoważonych ograniczników, musi być przynajmniej pozbawione kontekstu.
Weźmy na przykład tablicę tablic tablic:
Oczywiście nie można tego przeanalizować za pomocą prawdziwych wyrażeń regularnych.
źródło