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

Материал из testwiki
Перейти к навигации Перейти к поиску

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

Частным случаем формальной грамматики также является контекстно-свободная грамматика.

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

Формальное определение

Формальная грамматика G=(N, T, I, P) является контекстно-зависимой, если все правила P имеют вид: αAβ → αωβ

где A ∈ N (то есть одиночный нетерминальный символ), ω ∈ (N ∪ T)+ (то есть непустая цепочка, состоящая из терминальных и/или нетерминальных символов), α, β ∈ (N ∪ T)* (то есть любая цепочка, состоящая из терминальных и/или нетерминальных символов).

Примеры

Следующая грамматика задает контекстно-зависимый язык {anbncn:n≥1}:

  1. S→aSBC
  2. S→aBC
  3. CB→CZ
  4. CZ→WZ
  5. WZ→WC
  6. WC→BC
  7. aB→ab
  8. bB→bb
  9. bC→bc
  10. cC→cc

Так выглядит цепочка порождения aaa bbb ccc:

S
⇒1aSBC
⇒1a𝒂𝑺𝑩𝑪BC
⇒2aa𝒂𝑩𝑪BCBC
⇒3aaaB𝑪𝒁CBC
⇒4aaaB𝑾𝒁CBC
⇒5aaaB𝑾𝑪CBC
⇒6aaaB𝑩𝑪CBC
⇒3aaaBBC𝑪𝒁C
⇒4aaaBBC𝑾𝒁C
⇒5aaaBBC𝑾𝑪C
⇒6aaaBBC𝑩𝑪C
⇒3aaaBB𝑪𝒁CC
⇒4aaaBB𝑾𝒁CC
⇒5aaaBB𝑾𝑪CC
⇒6aaaBB𝑩𝑪CC
⇒7aa𝒂𝒃BBCCC
⇒8aaa𝒃𝒃BCCC
⇒8aaab𝒃𝒃CCC
⇒9aaabb𝒃𝒄CC
⇒10aaabbb𝒄𝒄C
⇒10aaabbbc𝒄𝒄

См. также

  • JFLAP кроссплатформенная программа симулятор автоматов, машины Тьюринга, грамматик, рисует граф автомата

Литература

Шаблон:Формальные языки