Грамматику языка можно описать различными способами: например, грамматика
русского языка описывается довольно сложным набором правил.
Правило — это упорядоченная пара цепочек символов (α, β). В правилах очень
важен порядок цепочек, поэтому их чаще записывают в виде α→β.
Формально грамматика G определяется как четверка (N, T, P, S), где
• N — конечное множество нетерминальных символов или нетерминалов;
• T — конечное множество терминальных символов или терминалов, причем
N∩T=∅;
• P — конечное множество правил грамматики вида α→β,
где (α , β) ∈
***
()()()NTNNT NT×UUU
.
• S — символ из N, называемый начальным символом.
Множество V = N∪T называют полным алфавитом грамматики G.
Каждый символ множества N может встречаться в цепочках как левой, так и
правой частей правил грамматики, но он обязан хотя бы один раз быть в левой
части хотя бы одного правила. Правила грамматики строятся так, чтобы в левой
части каждого правила был хотя бы один нетерминальный символ.
Пример 1.
Дана грамматика G =({A, S}, {0, 1}, P, S), где P = {S→0A1, 0A→00A1, A→e}.
Нетерминальными символами являются A, S, а терминальными 0, 1.
Грамматика определяет язык рекурсивным образом посредством задания особого
рода выводимых цепочек.
Выводимые цепочки грамматики G = (N, T, P, S) определяются следующим
образом:
• S — выводимая цепочка;
• Если αβγ — выводимая цепочка, и β→δ содержится в Р,
то αδγ - тоже выводимая цепочка
Выводимая цепочка грамматики G, не содержащая нетерминальных символов,
называется терминальной цепочкой, порождаемой грамматикой G.
Язык, порождаемый грамматикой G (L(G)) - это множество терминальных
цепочек, порождаемых грамматикой G.
Пусть G = (N, T, P, S) — грамматика, V = N∪T — ее алфавит. α,β,γ ∈ V*, δ ∈
V
+
. Цепочка ϕ = αβγ называется непосредственно выводимой из ψ = αδγ в
грамматике G, если в G существует правило δ→β ∈ P. Обозначается ψ ⇒
G
ϕ. В
тех случаях, когда из контекста ясно, о какой грамматике идет речь, нижний
индекс G будем опускать.
Иными словами, цепочка ϕ непосредственно выводима из ψ, если можно взять
несколько символов в цепочке ψ, заменить их на другие символы согласно
правилу грамматики и получить цепочку ϕ. Любая из цепочек δ и β (или обе они)
может быть пустой. В предельном случае вся цепочка ψ может быть заменена на
цепочку ϕ, тогда в грамматике G должно существовать правило ψ→ϕ ∈ P.
Через ⇒
k
будем обозначать k-ю степень отношения ⇒. Иначе говоря, α⇒
k
β ,
если существует последовательность α
0
,α
1
, α
2
,…, α
k
, состоящая из k+1 не
обязательно различных цепочек, для которых α=α
0
, α
i-1
⇒α
I
, 1≤i≤k и α
k
=β. Эта
последовательность называется выводом длины k цепочки β из цепочки α в
грамматике G.
Введем отношение ϕ⇒
+
ψ означающее, что цепочка ψ выводима из ϕ
нетривиальным образом: ϕ⇒
+
ψ тогда и только тогда, когда ϕ⇒
i
ψ для некоторого
i≥1.