Бесконтекстный язык - Context-free language - Wikipedia

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

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

Фон

Бесконтекстная грамматика

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

Автоматы

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

Примеры

Модельный контекстно-свободный язык - это , язык всех непустых строк четной длины, все первые половины которых являются а's, а все вторые половинки бс. L порождается грамматикой .Этот язык не обычный.Это принято выталкивающий автомат куда определяется следующим образом:[примечание 1]

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

Язык Дайка

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

Характеристики

Бесконтекстный анализ

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

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

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

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

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

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

Закрытие

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

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

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

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

Разрешимость

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

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

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

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

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

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

Языки, которые не являются контекстными

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

Примечания

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

Рекомендации

  1. ^ Хопкрофт и Ульман, 1979, п. 100, теорема 4.7.
  2. ^ Валиант, Лесли Г. (апрель 1975 г.). «Общее бесконтекстное распознавание менее чем за кубическое время». Журнал компьютерных и системных наук. 10 (2): 308–315. Дои:10.1016 / s0022-0000 (75) 80046-8. Архивировано из оригинал 10 ноября 2014 г.
  3. ^ Ли, Лилиан (Январь 2002 г.). «Быстрый анализ грамматики без контекста требует быстрого умножения логической матрицы» (PDF). J ACM. 49 (1): 1–15. arXiv:cs / 0112018. Дои:10.1145/505241.505242.
  4. ^ Кнут, Д. Э. (Июль 1965 г.). «О переводе языков слева направо» (PDF). Информация и контроль. 8 (6): 607–639. Дои:10.1016 / S0019-9958 (65) 90426-2. Архивировано из оригинал (PDF) 15 марта 2012 г.. Получено 29 мая 2011.
  5. ^ а б c Хопкрофт и Ульман, 1979, п. 131, следствие теоремы 6.1.
  6. ^ Хопкрофт и Ульман, 1979, п. 142, упражнение 6.4d.
  7. ^ Хопкрофт и Ульман, 1979, п. 131-132, следствие теоремы 6.2.
  8. ^ Хопкрофт и Ульман, 1979, п. 132, теорема 6.3.
  9. ^ Хопкрофт и Ульман, 1979, п. 142–144, упражнение 6.4c.
  10. ^ Хопкрофт и Ульман, 1979, п. 142, упражнение 6.4b.
  11. ^ Хопкрофт и Ульман, 1979, п. 142, упражнение 6.4а.
  12. ^ Стивен Шейнберг (1960). «Замечание о булевых свойствах контекстно-свободных языков» (PDF). Информация и контроль. 3: 372–375. Дои: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. ^ Хопкрофт и Ульман, 1979, п. 203, теорема 8.12 (1).
  16. ^ Хопкрофт и Ульман, 1979, п. 202, теорема 8.10.
  17. ^ Саломаа (1973), п. 59, теорема 6.7
  18. ^ Хопкрофт и Ульман, 1979, п. 135, теорема 6.5.
  19. ^ Хопкрофт и Ульман, 1979, п. 203, теорема 8.12 (2).
  20. ^ Хопкрофт и Ульман, 1979, п. 203, теорема 8.12 (4).
  21. ^ Хопкрофт и Ульман, 1979, п. 203, теорема 8.11.
  22. ^ Хопкрофт и Ульман, 1979, п. 137, теорема 6.6 (а).
  23. ^ Хопкрофт и Ульман, 1979, п. 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. ^ Хопкрофт и Ульман, 1979.
  27. ^ Как доказать, что язык не является контекстно-зависимым?

Процитированные работы

дальнейшее чтение