Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В теории формальных языков , контекстно-свободный язык ( CFL ) представляет собой язык , порожденный контекстно-свободной грамматики (CFG).

Контекстно-свободные языки имеют множество приложений в языках программирования , в частности, большинство арифметических выражений генерируются контекстно-свободными грамматиками.

Фон [ править ]

Бесконтекстная грамматика [ править ]

Различные контекстно-свободные грамматики могут генерировать один и тот же контекстно-свободный язык. Внутренние свойства языка можно отличить от внешних свойств конкретной грамматики путем сравнения нескольких грамматик, описывающих язык.

Автоматы [ править ]

Набор всех контекстно-свободных языков идентичен набору языков, принимаемых автоматами выталкивания , что делает эти языки доступными для синтаксического анализа. Кроме того, для данного CFG существует прямой способ создания автомата выталкивания для грамматики (и, следовательно, соответствующего языка), хотя пойти другим путем (создание грамматики для данного автомата) не так просто.

Примеры [ править ]

Примером контекстно-свободного языка является язык всех непустых строк четной длины, все первые половины которых являются буквами a , а все вторые половины - буквами b . L порождается грамматикой . Этот язык не является регулярным . Он принимается автоматом выталкивания, где определяется следующим образом: [примечание 1]

Однозначные CFL - это подходящее подмножество всех CFL: есть по своей сути неоднозначные CFL. Примером неоднозначного по своей сути CFL является объединение с . Этот набор контекстно-независимый, поскольку объединение двух контекстно-свободных языков всегда контекстно-независимое. Но нет способа однозначно проанализировать строки в (неконтекстно-независимом) подмножестве, которое является пересечением этих двух языков. [1]

Язык Дайка [ править ]

Язык всех правильно подобранных скобках порождается грамматикой .

Свойства [ править ]

Бесконтекстный анализ [ править ]

Контекстно-свободный характер языка упрощает синтаксический анализ с помощью выталкивающего автомата.

Определение экземпляра проблемы членства ; т.е. по заданной строке определить, где находится язык, созданный данной грамматикой ; также известен как признание . Лесли Г. Валиант показал , что неконтекстное распознавание грамматик нормальных форм Хомского сводится к логическому умножению матриц , таким образом унаследовав верхнюю границу сложности O ( n 2.3728639 ). [2] [примечание 2] И наоборот, Лилиан Ли показала O ( n 3 − ε) логическое умножение матриц сводится к O ( n 3−3ε ) разбору CFG, тем самым устанавливая некоторую нижнюю границу для последнего. [3]

Практическое использование контекстно-свободных языков требует также создания производного дерева, которое демонстрирует структуру, которую грамматика связывает с данной строкой. Процесс создания этого дерева называется синтаксическим анализом . Известные синтаксические анализаторы имеют временную сложность, кубическую по размеру анализируемой строки.

Формально набор всех контекстно-свободных языков идентичен набору языков, принимаемых автоматами выталкивания (PDA). Алгоритмы Parser для контекстно-свободных языков включают алгоритм CYK и алгоритм Эрли .

Особым подклассом контекстно-свободных языков являются детерминированные контекстно-свободные языки, которые определяются как набор языков, принимаемых детерминированным автоматом выталкивания, и которые могут быть проанализированы парсером LR (k) . [4]

См. Также синтаксический анализ грамматики выражений как альтернативный подход к грамматике и синтаксическому анализатору.

Закрытие [ править ]

Класс контекстно-свободных языков закрывается при следующих операциях. То есть, если L и P являются контекстно-независимыми языками, следующие языки также являются контекстно-независимыми:

  • объединение из L и P [5]
  • обращение L [6]
  • конкатенации из L и P [5]
  • клиниевская звезда из L [5]
  • изображение из L под гомоморфизм [7]
  • изображение из L под обратной гомоморфизм [8]
  • циклический сдвиг на L (язык ) [9]
  • префиксное замыкание L (множество всех префиксов строк из L ) [10]
  • фактор L / R из L с помощью регулярного языка R [11]

Незащищенность от пересечения, дополнения и различия [ править ]

Контекстно-свободные языки не закрываются при пересечении. Это можно увидеть, взяв языки и , которые не зависят от контекста. [примечание 3] Их пересечение есть , что можно показать неконтекстно-бесконтекстной леммой для контекстно-свободных языков . Как следствие, контекстно-свободные языки не могут быть закрыты при комплементарности, как и для любых языков A и B , их пересечение может быть выражено профсоюзом и дополнения: . В частности, контекстно-свободный язык не может быть закрыт при разнице, так как дополнение может быть выражено разностью: . [12]

Однако, если L - контекстно-свободный язык, а D - обычный язык, то и их пересечение, и их различие являются контекстно-свободными языками. [13]

Разрешимость [ править ]

В формальной теории языка вопросы о регулярных языках обычно разрешимы, а вопросы о контекстно-свободных языках - часто нет. Разрешаемо, является ли такой язык конечным, но не содержит ли он всех возможных строк, является ли он правильным, однозначным или эквивалентным языку с другой грамматикой. [14]

Следующие проблемы неразрешимы для произвольно заданных контекстно-свободных грамматик A и B:

  • Эквивалентность: есть ? [15]
  • Несвязанность: есть  ? [16] Однако пересечение контекстно-свободного языка и регулярного языка является контекстно-независимым, [17] [18] поэтому вариант проблемы, когда B - регулярная грамматика, разрешим (см. «Пустота» ниже).
  • Сдерживание: есть  ? [19] Опять же, вариант проблемы, где B - регулярная грамматика, разрешим, [ необходима цитата ], в то время как вариант , в котором A является регулярным, обычно нет. [20]
  • Универсальность: есть  ? [21]

Для произвольных контекстно-свободных языков разрешимы следующие проблемы :

  • Пустота: Учитывая контекстно-свободную грамматику A , есть  ли? [22]
  • Конечность: Учитывая контекстно-свободную грамматику , является конечным? [23]
  • Членство: Учитывая контекстно-независимую грамматику G , да и слово , не так ли  ? Эффективные алгоритмы полиномиального времени для задачи членства являются алгоритмом CYK и алгоритм Эрел .

Согласно Hopcroft, Motwani, Ullman (2003), [24], многие из фундаментальных свойств замкнутости и (не) разрешимости контекстно-свободных языков были показаны в статье Бар-Гилеля , Перлеса и Шамира 1961 года [25].

Языки, которые не являются контекстно-независимыми [ править ]

Набор является контекстно-зависимым языком , но не существует контекстно-зависимой грамматики, генерирующей этот язык. [26] Итак, существуют контекстно-зависимые языки, которые не являются контекстно-независимыми. Чтобы доказать, что данный язык не является контекстно-независимым, можно использовать лемму о накачке для контекстно-свободных языков [25] или ряд других методов, таких как лемма Огдена или теорема Париха . [27]

Заметки [ править ]

  1. ^ значениеаргументов и результатов:
  2. ^ В статье Валианта O ( n 2.81 ) было тогда самой известной верхней границей. См. Раздел « Умножение матриц # Алгоритмы» для эффективного умножения матриц и « Алгоритм Копперсмита – Винограда» для улучшения границ с тех пор.
  3. ^ Контекстно-свободная грамматика для языка A задается следующими производственными правилами, принимая S в качестве начального символа: S Sc | aTb | ε ; T aTb | ε . Грамматика для B аналогична.

Ссылки [ править ]

  1. Перейти ↑ Hopcroft & Ullman 1979 , p. 100, теорема 4.7.
  2. Valiant, Лесли Г. (апрель 1975 г.). «Общее бесконтекстное распознавание менее чем за кубическое время» . Журнал компьютерных и системных наук . 10 (2): 308–315. DOI : 10.1016 / s0022-0000 (75) 80046-8 . Архивировано из оригинального 10 ноября 2014 года.
  3. ^ Ли, Лилиан (январь 2002 г.). «Быстрый анализ грамматики без контекста требует быстрого умножения логических матриц» (PDF) . J ACM . 49 (1): 1–15. arXiv : cs / 0112018 . DOI : 10.1145 / 505241.505242 .
  4. Knuth, DE (июль 1965 г.). «О переводе языков слева направо» (PDF) . Информация и контроль . 8 (6): 607–639. DOI : 10.1016 / S0019-9958 (65) 90426-2 . Архивировано из оригинального (PDF) 15 марта 2012 года . Проверено 29 мая 2011 года .
  5. ^ a b c Hopcroft & Ullman 1979 , стр. 131, следствие теоремы 6.1.
  6. Перейти ↑ Hopcroft & Ullman 1979 , p. 142, упражнение 6.4d.
  7. Перейти ↑ Hopcroft & Ullman 1979 , p. 131-132, следствие теоремы 6.2.
  8. Перейти ↑ Hopcroft & Ullman 1979 , p. 132, теорема 6.3.
  9. Перейти ↑ Hopcroft & Ullman 1979 , p. 142–144, упражнение 6.4c.
  10. Перейти ↑ Hopcroft & Ullman 1979 , p. 142, упражнение 6.4b.
  11. Перейти ↑ Hopcroft & Ullman 1979 , p. 142, упражнение 6.4а.
  12. ^ Стивен Шейнберг (1960). «Примечание о логических свойствах контекстно-свободных языков» (PDF) . Информация и контроль . 3 : 372–375. DOI : 10.1016 / s0019-9958 (60) 90965-7 .
  13. ^ Бейгель, Ричард; Гасарх, Уильям. «Доказательство того, что если L = L1 ∩ L2, где L1 - CFL, а L2 - обычный, то L - контекстно-свободный, который не использует КПК» (PDF) . Департамент компьютерных наук Мэрилендского университета . Проверено 6 июня 2020 года .
  14. ^ Вольфрам, Стивен (2002). Новый вид науки . Wolfram Media, Inc. стр. 1138 . ISBN 1-57955-008-8.
  15. Перейти ↑ Hopcroft & Ullman 1979 , p. 203, теорема 8.12 (1).
  16. Перейти ↑ Hopcroft & Ullman 1979 , p. 202, теорема 8.10.
  17. ^ Саломаа (1973) , стр. 59, теорема 6.7
  18. Перейти ↑ Hopcroft & Ullman 1979 , p. 135, теорема 6.5.
  19. Перейти ↑ Hopcroft & Ullman 1979 , p. 203, теорема 8.12 (2).
  20. Перейти ↑ Hopcroft & Ullman 1979 , p. 203, теорема 8.12 (4).
  21. Перейти ↑ Hopcroft & Ullman 1979 , p. 203, теорема 8.11.
  22. Перейти ↑ Hopcroft & Ullman 1979 , p. 137, теорема 6.6 (а).
  23. Перейти ↑ Hopcroft & Ullman 1979 , p. 137, теорема 6.6 (b).
  24. ^ Джон Э. Хопкрофт; Раджив Мотвани; Джеффри Д. Ульман (2003). Введение в теорию автоматов, языки и вычисления . Эддисон Уэсли. Здесь: раздел 7.6, стр.304 и раздел 9.7, стр.411.
  25. ^ а б Иегошуа Бар-Гиллель; Миха Ашер Перлес; Эли Шамир (1961). «О формальных свойствах грамматик простых фраз». Zeitschrift für Phonetik, Sprachwissenschaft und Kommunikationsforschung . 14 (2): 143–172.
  26. Перейти ↑ Hopcroft & Ullman 1979 .
  27. ^ Как доказать, что язык не является контекстно-зависимым?

Процитированные работы [ править ]

  • Хопкрофт, Джон Э .; Ульман, Джеффри Д. (1979). Введение в теорию автоматов, языки и вычисления (1-е изд.). Эддисон-Уэсли.
  • Саломаа, Арто (1973). Формальные языки . Серия монографий ACM.

Дальнейшее чтение [ править ]

  • Отбер, Жан-Мишель; Берстель, Жан; Боассон, Люк (1997). «Контекстно-свободные языки и выталкивающие автоматы». У Г. Розенберга; А. Саломаа (ред.). Справочник формальных языков (PDF) . 1 . Springer-Verlag. С. 111–174.
  • Гинзбург, Сеймур (1966). Математическая теория контекстно-свободных языков . Нью-Йорк, Нью-Йорк, США: Макгроу-Хилл.
  • Сипсер, Майкл (1997). «2: Контекстно-свободные языки». Введение в теорию вычислений . PWS Publishing. С. 91–122. ISBN 0-534-94728-X.