Контекстно-свободная грамматика

Контекстно-свободная грамматика

Контекстно-свободная грамматика (КС-грамматика, бесконтекстная грамматика) — частный случай формальной грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются одиночными нетерминалами. Смысл термина «контекстно-свободная» заключается в том, что возможность применить продукцию к нетерминалу, в отличие от общего случая неограниченной грамматики Хомского, не зависит от контекста этого нетерминала.

Язык, который может быть задан КС-грамматикой, называется контекстно-свободным языком или КС-языком.

Следует заметить, что по сути КС-грамматика — другая форма БНФ.

Содержание

Применение

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

Для разбора КС-грамматики достаточно автомата со стеком, для разбора не-КС-грамматик может потребоваться полная машина Тьюринга.

Типы КС грамматик

  • LL-грамматика
  • LALR-грамматика (см.: LALR(1))
  • LR-грамматика
  • SLR-грамматика (см.: SLR(1))

Примеры

Примеры КС-грамматик и соответствующих им КС-языков:

Слово с переворотом

Задаётся формулой L=\{ww^R, w \in \Sigma*\}

  • Терминалы: буквы алфавита Σ;
  • Нетерминал: S;
  • Продукции: S\rightarrow\alpha S\alpha, \alpha \in \Sigma; S\rightarrow\varepsilon
  • Начальный нетерминал — S.

Вложенные скобки

  • Терминалы: '(' и ')';
  • нетерминал: S;
  • продукции: S→(S), S→ε;
  • начальный нетерминал — S.

Этой грамматикой задаётся язык вложенных скобок { (n)n | n≥0 }.

Язык Дика

Арифметическое выражение

  • Терминалы: '+', '-', '*', '/', '(', ')', 'x'
  • нетерминалы: <выражение>, <слагаемое>, <множитель>
  • продукции:
<выражение> → <выражение> + <слагаемое>,
<выражение> → <выражение> - <слагаемое>,
<выражение> → <слагаемое>,
<слагаемое> → <слагаемое> * <множитель>,
<слагаемое> → <слагаемое> / <множитель>,
<слагаемое> → <множитель>,
<множитель> → ( <выражение> ),
<множитель> → x,
  • начальный нетерминал: <выражение>.

Этой грамматикой задаётся арифметическое выражение, содержащее простейшие арифметические действие над переменной x. Если заменить терминал 'x' на нетерминал <число>, то получится грамматика, задающая арифметическое выражение, состоящее из операций сложения, вычитания, умножение и деления над целыми числами.

Ограничения возможностей КС грамматик

Не все языки могут быть заданы КС-грамматикой. Так, язык { anbncn | n≥1 } не является контекстно-свободным.

См. также

Литература

  • Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман Введение в теорию автоматов, языков и вычислений = Introduction to Automata Theory, Languages, and Computation. — М.: «Вильямс», 2002. — С. 528. — ISBN 0-201-44124-1

Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Контекстно-свободная грамматика" в других словарях:

  • Стохастическая контекстно-свободная грамматика — Связать? …   Википедия

  • Взвешенная контекстно-свободная грамматика — Связать? Взвешенная контекстно свободная грамматика (ВКС грамматика)  это контекстно свободная грамматика, у которой каждому правилу вывода соответствует числовой вес. Вес дерева раз …   Википедия

  • Контекстно-зависимая грамматика — (КЗ грамматика, контекстная грамматика)  частный случай формальной грамматики (тип 1 по иерархии Хомского), у которой левые и правые части всех продукций могут быть окружены терминальными и нетерминальными символами. Частным случаем… …   Википедия

  • Контекстно-свободные — Контекстно свободная грамматика (КС грамматика, бесконтекстная грамматика) частный случай формальной грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются нетерминалами. Смысл термина «контекстно свободная»… …   Википедия

  • Контекстно-свободный язык — Контекстно свободная грамматика (КС грамматика, бесконтекстная грамматика) частный случай формальной грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются нетерминалами. Смысл термина «контекстно свободная»… …   Википедия

  • Грамматика формальная — Формальная грамматика или просто грамматика в теории формальных языков способ описания формального языка, то есть выделения некоторого подмножества из множества всех слов некоторого конечного алфавитa. Различают порождающие и распознающие (или… …   Википедия

  • ГРАММАТИКА БЕСКОНТЕКСТНАЯ — грамматика контекстно свободная, КС грамматика, грамматика составляющих, все правила к рой имеют вид где А вспомогательный символ и непустая цепочка (так наз. бесконтекстные правила). Языки, порождаемые такими грамматиками, наз. бесконтекстными… …   Математическая энциклопедия

  • Бесконтекстная грамматика — Контекстно свободная грамматика (КС грамматика, бесконтекстная грамматика) частный случай формальной грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются нетерминалами. Смысл термина «контекстно свободная»… …   Википедия

  • КС-грамматика — Контекстно свободная грамматика (КС грамматика, бесконтекстная грамматика) частный случай формальной грамматики (тип 2 по иерархии Хомского), у которой левые части всех продукций являются нетерминалами. Смысл термина «контекстно свободная»… …   Википедия

  • DC-грамматика — Грамматика, построенная на определённых предложениях (сокр. DC грамматика, DCG; от англ. Definite clause grammar)  это способ построения грамматики в логических языках программирования, например, Пролог. DC грамматика обычно… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»