Контекстно зависимая грамматика (КЗ-грамматика , контекстная грамматика ) — частный случай формальной грамматики (тип 1 по иерархии Хомского ), у которой левые и правые части всех продукций могут быть окружены терминальными и нетерминальными символами.
Частным случаем формальной грамматики также является контекстно-свободная грамматика .
Язык , который может быть задан КЗ-грамматикой, называется контекстно зависимым языком или КЗ-языком.
Формальная грамматика G=(N, T, I, P) является контекстно-зависимой, если все правила P имеют вид:
αAβ → αωβ
где A ∈ N (то есть одиночный нетерминальный символ), ω ∈ (N ∪ T)+ (то есть непустая цепочка, состоящая из терминальных и/или нетерминальных символов), α, β ∈ (N ∪ T)* (то есть любая цепочка, состоящая из терминальных и/или нетерминальных символов).
Следующая грамматика задает контекстно-зависимый язык
{
a
n
b
n
c
n
:
n
≥
1
}
{\displaystyle \{a^{n}b^{n}c^{n}:n\geq 1\}}
:
S
→
a
S
B
C
{\displaystyle S\rightarrow aSBC}
S
→
a
B
C
{\displaystyle S\rightarrow aBC}
C
B
→
C
Z
{\displaystyle CB\rightarrow CZ}
C
Z
→
W
Z
{\displaystyle CZ\rightarrow WZ}
W
Z
→
W
C
{\displaystyle WZ\rightarrow WC}
W
C
→
B
C
{\displaystyle WC\rightarrow BC}
a
B
→
a
b
{\displaystyle aB\rightarrow ab}
b
B
→
b
b
{\displaystyle bB\rightarrow bb}
b
C
→
b
c
{\displaystyle bC\rightarrow bc}
c
C
→
c
c
{\displaystyle cC\rightarrow cc}
Так выглядит цепочка порождения aaa bbb ccc:
S
{\displaystyle S}
⇒
1
a
S
B
C
{\displaystyle \Rightarrow _{1}aSBC}
⇒
1
a
a
S
B
C
B
C
{\displaystyle \Rightarrow _{1}a{\boldsymbol {aSBC}}BC}
⇒
2
a
a
a
B
C
B
C
B
C
{\displaystyle \Rightarrow _{2}aa{\boldsymbol {aBC}}BCBC}
⇒
3
a
a
a
B
C
Z
C
B
C
{\displaystyle \Rightarrow _{3}aaaB{\boldsymbol {CZ}}CBC}
⇒
4
a
a
a
B
W
Z
C
B
C
{\displaystyle \Rightarrow _{4}aaaB{\boldsymbol {WZ}}CBC}
⇒
5
a
a
a
B
W
C
C
B
C
{\displaystyle \Rightarrow _{5}aaaB{\boldsymbol {WC}}CBC}
⇒
6
a
a
a
B
B
C
C
B
C
{\displaystyle \Rightarrow _{6}aaaB{\boldsymbol {BC}}CBC}
⇒
3
a
a
a
B
B
C
C
Z
C
{\displaystyle \Rightarrow _{3}aaaBBC{\boldsymbol {CZ}}C}
⇒
4
a
a
a
B
B
C
W
Z
C
{\displaystyle \Rightarrow _{4}aaaBBC{\boldsymbol {WZ}}C}
⇒
5
a
a
a
B
B
C
W
C
C
{\displaystyle \Rightarrow _{5}aaaBBC{\boldsymbol {WC}}C}
⇒
6
a
a
a
B
B
C
B
C
C
{\displaystyle \Rightarrow _{6}aaaBBC{\boldsymbol {BC}}C}
⇒
3
a
a
a
B
B
C
Z
C
C
{\displaystyle \Rightarrow _{3}aaaBB{\boldsymbol {CZ}}CC}
⇒
4
a
a
a
B
B
W
Z
C
C
{\displaystyle \Rightarrow _{4}aaaBB{\boldsymbol {WZ}}CC}
⇒
5
a
a
a
B
B
W
C
C
C
{\displaystyle \Rightarrow _{5}aaaBB{\boldsymbol {WC}}CC}
⇒
6
a
a
a
B
B
B
C
C
C
{\displaystyle \Rightarrow _{6}aaaBB{\boldsymbol {BC}}CC}
⇒
7
a
a
a
b
B
B
C
C
C
{\displaystyle \Rightarrow _{7}aa{\boldsymbol {ab}}BBCCC}
⇒
8
a
a
a
b
b
B
C
C
C
{\displaystyle \Rightarrow _{8}aaa{\boldsymbol {bb}}BCCC}
⇒
8
a
a
a
b
b
b
C
C
C
{\displaystyle \Rightarrow _{8}aaab{\boldsymbol {bb}}CCC}
⇒
9
a
a
a
b
b
b
c
C
C
{\displaystyle \Rightarrow _{9}aaabb{\boldsymbol {bc}}CC}
⇒
10
a
a
a
b
b
b
c
c
C
{\displaystyle \Rightarrow _{10}aaabbb{\boldsymbol {cc}}C}
⇒
10
a
a
a
b
b
b
c
c
c
{\displaystyle \Rightarrow _{10}aaabbbc{\boldsymbol {cc}}}
JFLAP кроссплатформенная программа симулятор автоматов, машины Тьюринга, грамматик, рисует граф автомата
Кук Д., Бейз Г. Глава 8. Языки и грамматики // Компьютерная математика = Computer Mathematics. — М. : Наука. Физматлит, 1990. — 384 с. — ISBN 5-02-014216-6 .
Общие понятия Тип 0 Тип 1 Тип 2 Тип 3 Синтаксический анализ