🗊Презентация Классификация грамматик. Вывод в грамматиках

Нажмите для полного просмотра!
Классификация грамматик. Вывод в грамматиках, слайд №1Классификация грамматик. Вывод в грамматиках, слайд №2Классификация грамматик. Вывод в грамматиках, слайд №3Классификация грамматик. Вывод в грамматиках, слайд №4Классификация грамматик. Вывод в грамматиках, слайд №5Классификация грамматик. Вывод в грамматиках, слайд №6Классификация грамматик. Вывод в грамматиках, слайд №7Классификация грамматик. Вывод в грамматиках, слайд №8Классификация грамматик. Вывод в грамматиках, слайд №9Классификация грамматик. Вывод в грамматиках, слайд №10Классификация грамматик. Вывод в грамматиках, слайд №11Классификация грамматик. Вывод в грамматиках, слайд №12Классификация грамматик. Вывод в грамматиках, слайд №13Классификация грамматик. Вывод в грамматиках, слайд №14Классификация грамматик. Вывод в грамматиках, слайд №15Классификация грамматик. Вывод в грамматиках, слайд №16Классификация грамматик. Вывод в грамматиках, слайд №17Классификация грамматик. Вывод в грамматиках, слайд №18Классификация грамматик. Вывод в грамматиках, слайд №19Классификация грамматик. Вывод в грамматиках, слайд №20Классификация грамматик. Вывод в грамматиках, слайд №21Классификация грамматик. Вывод в грамматиках, слайд №22Классификация грамматик. Вывод в грамматиках, слайд №23Классификация грамматик. Вывод в грамматиках, слайд №24Классификация грамматик. Вывод в грамматиках, слайд №25Классификация грамматик. Вывод в грамматиках, слайд №26Классификация грамматик. Вывод в грамматиках, слайд №27Классификация грамматик. Вывод в грамматиках, слайд №28

Содержание

Вы можете ознакомиться и скачать презентацию на тему Классификация грамматик. Вывод в грамматиках. Доклад-сообщение содержит 28 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Классификация грамматик. Вывод в грамматиках
Описание слайда:
Классификация грамматик. Вывод в грамматиках

Слайд 2





Классификация грамматик
Аврам Ноам Хомский  (Avram Noam Chomsky , 1928) – американский лингвист, политический публицист, философ и теоретик, профессор лингвистики Массачусетского технологического института, автор классификации формальных языков, называемой иерархией Хомского.
Включающая иерархия языков Хомского :
0-грамматики – Грамматики без ограничений (грамматики с фразовой структурой)
	α ::= β, 
	где α ϵ V+, β ϵ V*
Это самый общий тип грамматик. В него попадают все без исключения формальные грамматики, но часть из них может быть также отнесена и к другим классификационным типам. Грамматики, которые относятся только к типу 0 и не могут быть отнесены к другим типам, являются самыми сложными по структуре. Практического применения грамматики, относящиеся только к типу 0, не имеют.
Описание слайда:
Классификация грамматик Аврам Ноам Хомский (Avram Noam Chomsky , 1928) – американский лингвист, политический публицист, философ и теоретик, профессор лингвистики Массачусетского технологического института, автор классификации формальных языков, называемой иерархией Хомского. Включающая иерархия языков Хомского : 0-грамматики – Грамматики без ограничений (грамматики с фразовой структурой) α ::= β, где α ϵ V+, β ϵ V* Это самый общий тип грамматик. В него попадают все без исключения формальные грамматики, но часть из них может быть также отнесена и к другим классификационным типам. Грамматики, которые относятся только к типу 0 и не могут быть отнесены к другим типам, являются самыми сложными по структуре. Практического применения грамматики, относящиеся только к типу 0, не имеют.

Слайд 3





Классификация грамматик
1-грамматики – Контекстно-зависимые (неукорачивающие) грамматики
 Контекстно-зависимые грамматики:
 	α1Аα2 ::= α1βα2, 
	где α1, α2 ϵ V*, А ϵ VN, β ϵ V+. 
 Неукорачивающие грамматики : 
	α ::= β, 
	где α,β ϵ V+, |β| ≥ |α|. 
Эти два класса грамматик эквивалентны. Это значит, что для любого языка, заданного КЗ-грамматикой, можно построить неукорачивающую грамматику, которая будет задавать эквивалентный язык, и, наоборот, для любого языка, заданного неукорачивающей грамматикой, можно построить КЗ-грамматику, которая будет задавать эквивалентный язык.
Описание слайда:
Классификация грамматик 1-грамматики – Контекстно-зависимые (неукорачивающие) грамматики Контекстно-зависимые грамматики: α1Аα2 ::= α1βα2, где α1, α2 ϵ V*, А ϵ VN, β ϵ V+. Неукорачивающие грамматики : α ::= β, где α,β ϵ V+, |β| ≥ |α|. Эти два класса грамматик эквивалентны. Это значит, что для любого языка, заданного КЗ-грамматикой, можно построить неукорачивающую грамматику, которая будет задавать эквивалентный язык, и, наоборот, для любого языка, заданного неукорачивающей грамматикой, можно построить КЗ-грамматику, которая будет задавать эквивалентный язык.

Слайд 4





Классификация грамматик
2-грамматики – Контекстно-свободные грамматики
 Неукорачивающие контекстно-свободные (НКС) грамматики
	А ::= β, 
	где А ϵ VN, β ϵ V+
 Укорачивающие контекстно-свободные (УКС) грамматики
	А ::= β, 
	где А ϵ VN, β ϵ V*
Эти два класса, составляющие тип контекстно-свободных грамматик, почти эквивалентны. Разница между ними заключается лишь в том, что в УКС-грамматиках в правой части правил может присутствовать пустая цепочка, а в НКС-грамматиках – нет. Отсюда ясно, что язык, заданный НКС-грамматикой, не может содержать пустой цепочки.
Описание слайда:
Классификация грамматик 2-грамматики – Контекстно-свободные грамматики Неукорачивающие контекстно-свободные (НКС) грамматики А ::= β, где А ϵ VN, β ϵ V+ Укорачивающие контекстно-свободные (УКС) грамматики А ::= β, где А ϵ VN, β ϵ V* Эти два класса, составляющие тип контекстно-свободных грамматик, почти эквивалентны. Разница между ними заключается лишь в том, что в УКС-грамматиках в правой части правил может присутствовать пустая цепочка, а в НКС-грамматиках – нет. Отсюда ясно, что язык, заданный НКС-грамматикой, не может содержать пустой цепочки.

Слайд 5





Классификация грамматик
3-грамматики – Регулярные грамматики
 Леволинейные грамматики 
	А ::= Bγ или А ::= γ, 
	где А, В ϵ VN, γ ϵ VT*. 
 Праволинейные грамматики 
	А ::= γВ или А ::= γ, 
	где А, В ϵ VN, γ ϵ VT*. 
Частным случаем регулярных грамматик являются автоматные грамматики, в которых γ ϵ VT, т.е. правила имеют вид:
	А ::= Bх или А ::= х для левосторонних грамматик,
	А ::= хВ или А ::= х для правосторонних грамматик,
	где А, В ϵ VN, х ϵ VT.
Описание слайда:
Классификация грамматик 3-грамматики – Регулярные грамматики Леволинейные грамматики А ::= Bγ или А ::= γ, где А, В ϵ VN, γ ϵ VT*. Праволинейные грамматики А ::= γВ или А ::= γ, где А, В ϵ VN, γ ϵ VT*. Частным случаем регулярных грамматик являются автоматные грамматики, в которых γ ϵ VT, т.е. правила имеют вид: А ::= Bх или А ::= х для левосторонних грамматик, А ::= хВ или А ::= х для правосторонних грамматик, где А, В ϵ VN, х ϵ VT.

Слайд 6





Классификация языков
Языки классифицируются в соответствии с типами грамматик, с помощью которых они заданы. 
Один и тот же язык в общем случае может быть задан сколь угодно большим количеством грамматик, которые могут относиться к различным классификационным типам. 
Для классификации самого языка среди всех его грамматик выбирается грамматика с максимально возможным классификационным типом. 
Например, если язык L может быть задан грамматиками G1 и G2, относящимися к типу 1 (КЗ), грамматикой G3, относящейся к типу 2 (КС), и грамматикой G4, относящейся к типу 3 (регулярные), сам язык должен быть отнесён к типу 3 и является регулярным языком.
Описание слайда:
Классификация языков Языки классифицируются в соответствии с типами грамматик, с помощью которых они заданы. Один и тот же язык в общем случае может быть задан сколь угодно большим количеством грамматик, которые могут относиться к различным классификационным типам. Для классификации самого языка среди всех его грамматик выбирается грамматика с максимально возможным классификационным типом. Например, если язык L может быть задан грамматиками G1 и G2, относящимися к типу 1 (КЗ), грамматикой G3, относящейся к типу 2 (КС), и грамматикой G4, относящейся к типу 3 (регулярные), сам язык должен быть отнесён к типу 3 и является регулярным языком.

Слайд 7





Пример языка 1
Регулярная грамматика?
Нет  
AB ::= bBA
КС-грамматика?
Нет
AB ::= bBA
КЗ/Неукорчивающая грамматика?
Нет
bCD ::= λ
Вывод – тип 0, грамматика без ограничений
Описание слайда:
Пример языка 1 Регулярная грамматика? Нет AB ::= bBA КС-грамматика? Нет AB ::= bBA КЗ/Неукорчивающая грамматика? Нет bCD ::= λ Вывод – тип 0, грамматика без ограничений

Слайд 8





Пример языка 2
L(G) = { an bn cn, n >= 1}
G: 	S ::= aSBC | abC
	CB ::= BC
	bB ::= bb
	bC ::= bc
	cC ::= cc
Описание слайда:
Пример языка 2 L(G) = { an bn cn, n >= 1} G: S ::= aSBC | abC CB ::= BC bB ::= bb bC ::= bc cC ::= cc

Слайд 9





Пример языка 3
L(G) = {(ac)n (cb)n | n > 0}
G: 	S ::= aQb | accb
	Q ::= cSc
L(G) = {β  | β  ϵ {a,b}+, 
где нет двух рядом стоящих а}
G: 	S ::= A | B
	A ::= a | Ba
	B ::= b | Bb | Ab
Описание слайда:
Пример языка 3 L(G) = {(ac)n (cb)n | n > 0} G: S ::= aQb | accb Q ::= cSc L(G) = {β  | β ϵ {a,b}+, где нет двух рядом стоящих а} G: S ::= A | B A ::= a | Ba B ::= b | Bb | Ab

Слайд 10





Вывод в грамматике
Выводом называется процесс порождения предложения языка на основе правил определяющей язык грамматики. 
Цепочка β = δ1γδ2 непосредственно выводима из цепочки α, α = δ1ωδ2 в грамматике G (VT, VN, P, S) 
(α  β), если в грамматике существует правило 
ω ::= γ. 
Цепочка β называется выводимой из цепочки α 
(α * β) в случае, если выполняется одно из двух условий: 
β непосредственно выводима из α (α  β); 
существует γ1, …, γn такие, что 
α  γ1  γ2…  γ n  β.
Описание слайда:
Вывод в грамматике Выводом называется процесс порождения предложения языка на основе правил определяющей язык грамматики. Цепочка β = δ1γδ2 непосредственно выводима из цепочки α, α = δ1ωδ2 в грамматике G (VT, VN, P, S) (α  β), если в грамматике существует правило ω ::= γ. Цепочка β называется выводимой из цепочки α (α * β) в случае, если выполняется одно из двух условий: β непосредственно выводима из α (α  β); существует γ1, …, γn такие, что α  γ1  γ2…  γ n  β.

Слайд 11





Отношение вывода
С математической точки зрения вывод можно рассматривать как отношение на множестве V*.
 Оно обладает свойствами 
рефлексивности 
α * α 
транзитивности 
 если α * γ, γ * β, то α * β
Описание слайда:
Отношение вывода С математической точки зрения вывод можно рассматривать как отношение на множестве V*. Оно обладает свойствами рефлексивности α * α транзитивности если α * γ, γ * β, то α * β

Слайд 12





Примеры вывода
Грамматика для языка целых десятичных чисел со знаком: 
G ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –, +}, {S, T, F}, Р, S) 
Р: 	S ::= Т | +Т | –Т 
	Т ::= F | TF 
	F ::= 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 
1) S  ‑T  ‑TF  ‑TFF  ‑FFF  ‑4FF  ‑47F  ‑479 
2) S  T  TF  T8  F8  18 
3) T  TF  T0  TF0  T50  F50  350 
4) F  5 
Получаем, что: S * ‑479, S * 18, T * 350, F * 5.
Описание слайда:
Примеры вывода Грамматика для языка целых десятичных чисел со знаком: G ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –, +}, {S, T, F}, Р, S) Р: S ::= Т | +Т | –Т Т ::= F | TF F ::= 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 1) S  ‑T  ‑TF  ‑TFF  ‑FFF  ‑4FF  ‑47F  ‑479 2) S  T  TF  T8  F8  18 3) T  TF  T0  TF0  T50  F50  350 4) F  5 Получаем, что: S * ‑479, S * 18, T * 350, F * 5.

Слайд 13





Вывод и сентенциальная форма
Вывод называется законченным (или конечным), если на основе цепочки β, полученной в результате этого вывода, нельзя больше сделать ни одного шага вывода.
Цепочка символов α ϵ V* называется сентенциальной формой грамматики G (VT, VN, P, S), если она выводима из целевого символа грамматики S: 
S * α. 
Если цепочка α ϵ VT* получена в результате законченного вывода, то она называется конечной сентенциальной формой или предложением.
Язык L, заданный грамматикой G — это множество всех конечных сентенциальных форм грамматики G. 
Алфавит языка L(G) — это множество терминальных символов грамматики VT, поскольку все конечные сентенциальные формы грамматики — это цепочки над алфавитом VT.
Описание слайда:
Вывод и сентенциальная форма Вывод называется законченным (или конечным), если на основе цепочки β, полученной в результате этого вывода, нельзя больше сделать ни одного шага вывода. Цепочка символов α ϵ V* называется сентенциальной формой грамматики G (VT, VN, P, S), если она выводима из целевого символа грамматики S: S * α. Если цепочка α ϵ VT* получена в результате законченного вывода, то она называется конечной сентенциальной формой или предложением. Язык L, заданный грамматикой G — это множество всех конечных сентенциальных форм грамматики G. Алфавит языка L(G) — это множество терминальных символов грамматики VT, поскольку все конечные сентенциальные формы грамматики — это цепочки над алфавитом VT.

Слайд 14





Примеры сентенциальных форм
В грамматике для языка целых десятичных чисел со знаком: 
G ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –, +}, {S, T, F}, Р, S) 
Р: 	S ::= Т | +Т | –Т 
	Т ::= F | TF 
	F ::= 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 
Является сентенциальной формой?
S
+TF4
ST6
-3F6
89T
345
Описание слайда:
Примеры сентенциальных форм В грамматике для языка целых десятичных чисел со знаком: G ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –, +}, {S, T, F}, Р, S) Р: S ::= Т | +Т | –Т Т ::= F | TF F ::= 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Является сентенциальной формой? S +TF4 ST6 -3F6 89T 345

Слайд 15





Левосторонний и 
правосторонний выводы 
Вывод левосторонний, если на каждом шаге вывода правило грамматики применяется всегда к крайнему левому нетерминальному символу в цепочке.
Вывод правосторонний, если на каждом шаге вывода правило грамматики применяется всегда к крайнему правому нетерминальному символу в цепочке.
В грамматике для одной и той же цепочки может быть несколько выводов, эквивалентных в том смысле, что в них в одних и тех же местах применяются одни и те же правила вывода, но в различном порядке.
Описание слайда:
Левосторонний и правосторонний выводы Вывод левосторонний, если на каждом шаге вывода правило грамматики применяется всегда к крайнему левому нетерминальному символу в цепочке. Вывод правосторонний, если на каждом шаге вывода правило грамматики применяется всегда к крайнему правому нетерминальному символу в цепочке. В грамматике для одной и той же цепочки может быть несколько выводов, эквивалентных в том смысле, что в них в одних и тех же местах применяются одни и те же правила вывода, но в различном порядке.

Слайд 16





Эквивалентные выводы
Для цепочки a+b+a в грамматике 
G ({a, b, +}, {S, T}, P, S) 
P: S ::= T | T+S; 
    T ::= a | b 
можно построить выводы: 
1) S  T+S  T+T+S T+T+T a+T+T a+b+T  a+b+a 
2) S  T+S  a+S  a+T+S  a+b+S  a+b+T  a+b+a 
3) S  T+S  T+T+S  T+T+T  T+T+a  T+b+a  a+b+a
Описание слайда:
Эквивалентные выводы Для цепочки a+b+a в грамматике G ({a, b, +}, {S, T}, P, S) P: S ::= T | T+S; T ::= a | b можно построить выводы: 1) S  T+S  T+T+S T+T+T a+T+T a+b+T  a+b+a 2) S  T+S  a+S  a+T+S  a+b+S  a+b+T  a+b+a 3) S  T+S  T+T+S  T+T+T  T+T+a  T+b+a  a+b+a

Слайд 17





Дерево вывода
Деревом вывода (синтаксическим деревом) грамматики G (VT, VN, P, S), называется дерево (граф), которое соответствует некоторой цепочке вывода и удовлетворяет следующим условиям:
каждая вершина дерева обозначается символом грамматики A∈(VT∪VN∪{λ});
корнем дерева является вершина, обозначенная целевым символом грамматики — S;
листьями дерева (концевыми вершинами) являются вершины, обозначенные терминальными символами грамматики или символом пустой цепочки λ;
если некоторый узел дерева обозначен нетерминальным символом A∈VN, а связанные с ним узлы — символами b1,b2,…,bn; n > 0, ∀n≥i>0: bi∈(VT∪VN∪{λ}), то в грамматике G (VT, VN, P, S), существует правило A::=b1b2…bn ∈ P.
Описание слайда:
Дерево вывода Деревом вывода (синтаксическим деревом) грамматики G (VT, VN, P, S), называется дерево (граф), которое соответствует некоторой цепочке вывода и удовлетворяет следующим условиям: каждая вершина дерева обозначается символом грамматики A∈(VT∪VN∪{λ}); корнем дерева является вершина, обозначенная целевым символом грамматики — S; листьями дерева (концевыми вершинами) являются вершины, обозначенные терминальными символами грамматики или символом пустой цепочки λ; если некоторый узел дерева обозначен нетерминальным символом A∈VN, а связанные с ним узлы — символами b1,b2,…,bn; n > 0, ∀n≥i>0: bi∈(VT∪VN∪{λ}), то в грамматике G (VT, VN, P, S), существует правило A::=b1b2…bn ∈ P.

Слайд 18





Построение синтаксического дерева сверху вниз
Для построения дерева вывода, достаточно иметь только цепочку вывода.
Для строго формализованного построения дерева вывода всегда удобнее пользоваться строго определенным выводом: либо левосторонним, либо правосторонним.
Целевой символ грамматики помещается в корень дерева. 
В грамматике выбирается необходимое правило, и на первом шаге вывода корневой символ раскрывается на несколько символов первого уровня. 
Среди всех концевых вершин дерева выбирается крайняя (крайняя левая — для левостороннего вывода, крайняя правая — для правостороннего) вершина, обозначенная нетерминальным символом, для этой вершины выбирается нужное правило грамматики, и она раскрывается на несколько вершин следующего уровня.
Построение дерева заканчивается, когда все концевые вершины обозначены терминальными символами, в противном случае надо вернуться ко третьему шагу и продолжить построение.
Описание слайда:
Построение синтаксического дерева сверху вниз Для построения дерева вывода, достаточно иметь только цепочку вывода. Для строго формализованного построения дерева вывода всегда удобнее пользоваться строго определенным выводом: либо левосторонним, либо правосторонним. Целевой символ грамматики помещается в корень дерева. В грамматике выбирается необходимое правило, и на первом шаге вывода корневой символ раскрывается на несколько символов первого уровня. Среди всех концевых вершин дерева выбирается крайняя (крайняя левая — для левостороннего вывода, крайняя правая — для правостороннего) вершина, обозначенная нетерминальным символом, для этой вершины выбирается нужное правило грамматики, и она раскрывается на несколько вершин следующего уровня. Построение дерева заканчивается, когда все концевые вершины обозначены терминальными символами, в противном случае надо вернуться ко третьему шагу и продолжить построение.

Слайд 19





Построение синтаксического дерева снизу вверх
Построение дерева вывода снизу вверх начинается с листьев дерева. 
В качестве листьев выбираются терминальные символы конечной цепочки вывода, которые на первом шаге построения образуют последний уровень (слой) дерева. 
Построение дерева идет по слоям. В грамматике выбирается правило, правая часть которого соответствует крайним символам в слое дерева (крайним правым символам при правостороннем выводе и крайним левым — при левостороннем).
Выбранные вершины слоя соединяются с новой вершиной, которая выбирается из левой части правила. Новая вершина попадает в слой дерева вместо выбранных вершин. 
Построение дерева закончено, если достигнута корневая вершина (обозначенная целевым символом), а иначе надо вернуться ко второму шагу и повторить его над полученным слоем дерева.
Описание слайда:
Построение синтаксического дерева снизу вверх Построение дерева вывода снизу вверх начинается с листьев дерева. В качестве листьев выбираются терминальные символы конечной цепочки вывода, которые на первом шаге построения образуют последний уровень (слой) дерева. Построение дерева идет по слоям. В грамматике выбирается правило, правая часть которого соответствует крайним символам в слое дерева (крайним правым символам при правостороннем выводе и крайним левым — при левостороннем). Выбранные вершины слоя соединяются с новой вершиной, которая выбирается из левой части правила. Новая вершина попадает в слой дерева вместо выбранных вершин. Построение дерева закончено, если достигнута корневая вершина (обозначенная целевым символом), а иначе надо вернуться ко второму шагу и повторить его над полученным слоем дерева.

Слайд 20





Пример дерева вывода
Грамматика для языка целых десятичных чисел со знаком: 
G ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –, +}, {S, T, F}, Р, S) 
Р: S ::= Т | +Т | –Т 
     Т ::= F | TF 
     F ::= 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 
1) S  ‑T  ‑TF  ‑TFF  ‑FFF  ‑4FF  ‑47F  ‑479 
2) S  ‑T  ‑TF  ‑T9  ‑TF9  ‑T79  ‑F79 ‑479
Описание слайда:
Пример дерева вывода Грамматика для языка целых десятичных чисел со знаком: G ({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, –, +}, {S, T, F}, Р, S) Р: S ::= Т | +Т | –Т Т ::= F | TF F ::= 0 | l | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 1) S  ‑T  ‑TF  ‑TFF  ‑FFF  ‑4FF  ‑47F  ‑479 2) S  ‑T  ‑TF  ‑T9  ‑TF9  ‑T79  ‑F79 ‑479

Слайд 21





Вывод в компиляторах
Поскольку все известные языки программирования имеют нотацию записи «слева — направо», компилятор также всегда читает входную программу слева направо (и сверху вниз, если программа разбита на несколько строк).
Поэтому для построения дерева вывода методом «сверху вниз», как правило, используется левосторонний вывод, а для построения «снизу вверх» — правосторонний вывод. 
Нотация чтения программ «слева направо» влияет не только на порядок разбора программы компилятором (для пользователя это, как правило, не имеет значения), но и на порядок выполнения операций — при отсутствии скобок большинство равноправных операций выполняется в порядке слева направо, а это уже имеет существенное значение.
Описание слайда:
Вывод в компиляторах Поскольку все известные языки программирования имеют нотацию записи «слева — направо», компилятор также всегда читает входную программу слева направо (и сверху вниз, если программа разбита на несколько строк). Поэтому для построения дерева вывода методом «сверху вниз», как правило, используется левосторонний вывод, а для построения «снизу вверх» — правосторонний вывод. Нотация чтения программ «слева направо» влияет не только на порядок разбора программы компилятором (для пользователя это, как правило, не имеет значения), но и на порядок выполнения операций — при отсутствии скобок большинство равноправных операций выполняется в порядке слева направо, а это уже имеет существенное значение.

Слайд 22





Однозначные и неоднозначные грамматики
Рассмотрим грамматику G({+,—,*,/,(,),a,b},{S},P,S):
P:        S ::= S+S | S—S | S*S | S/S | (S) | a | b
Построим левосторонний вывод для цепочки a*b+a. 
S ⇒ S+S ⇒ S*S+S ⇒ a*S+S ⇒ a*b+S ⇒ a*b+a,
S ⇒ S*S ⇒ a*S ⇒ a*S+S ⇒ a*b+S ⇒ a*b+a.
Каждому из этих вариантов будет соответствовать свое дерево вывода.
Описание слайда:
Однозначные и неоднозначные грамматики Рассмотрим грамматику G({+,—,*,/,(,),a,b},{S},P,S): P: S ::= S+S | S—S | S*S | S/S | (S) | a | b Построим левосторонний вывод для цепочки a*b+a. S ⇒ S+S ⇒ S*S+S ⇒ a*S+S ⇒ a*b+S ⇒ a*b+a, S ⇒ S*S ⇒ a*S ⇒ a*S+S ⇒ a*b+S ⇒ a*b+a. Каждому из этих вариантов будет соответствовать свое дерево вывода.

Слайд 23





Однозначные и неоднозначные грамматики
Структура предложения и его значение (смысл) взаимосвязаны.
Дерево вывода (или цепочка вывода) является формой представления структуры предложения языка.
Для языков программирования, которые несут смысловую нагрузку, имеет принципиальное значение то, какая цепочка вывода будет построена для предложения языка.
Например, в примере языка арифметических выражений с точки зрения семантики порядок построения дерева вывода соответствует порядку выполнения арифметических действий. 
При отсутствии скобок умножение всегда выполняется раньше сложения (умножение имеет более высокий приоритет), но в рассмотренной выше грамматике это ниоткуда не следует — в ней все операции равноправны.
С точки зрения арифметических операций приведенная грамматика имеет неверную семантику — в ней нет приоритета операций, а для равноправных операций не определен порядок выполнения (в арифметике принят порядок выполнения действий «слева направо»), хотя синтаксическая структура построенных с ее помощью выражений будет правильной.
Описание слайда:
Однозначные и неоднозначные грамматики Структура предложения и его значение (смысл) взаимосвязаны. Дерево вывода (или цепочка вывода) является формой представления структуры предложения языка. Для языков программирования, которые несут смысловую нагрузку, имеет принципиальное значение то, какая цепочка вывода будет построена для предложения языка. Например, в примере языка арифметических выражений с точки зрения семантики порядок построения дерева вывода соответствует порядку выполнения арифметических действий. При отсутствии скобок умножение всегда выполняется раньше сложения (умножение имеет более высокий приоритет), но в рассмотренной выше грамматике это ниоткуда не следует — в ней все операции равноправны. С точки зрения арифметических операций приведенная грамматика имеет неверную семантику — в ней нет приоритета операций, а для равноправных операций не определен порядок выполнения (в арифметике принят порядок выполнения действий «слева направо»), хотя синтаксическая структура построенных с ее помощью выражений будет правильной.

Слайд 24





Однозначные и неоднозначные грамматики
Грамматика называется однозначной, если для каждой цепочки символов языка, заданного этой грамматикой, можно построить единственный левосторонний (и единственный правосторонний) вывод. 
Или, что то же самое, грамматика называется однозначной, если для каждой цепочки символов языка, заданного этой грамматикой, существует единственное дерево вывода. 
В противном случае грамматика называется неоднозначной.
Рассмотренная в примере грамматика арифметических выражений, очевидно, является неоднозначной.
Описание слайда:
Однозначные и неоднозначные грамматики Грамматика называется однозначной, если для каждой цепочки символов языка, заданного этой грамматикой, можно построить единственный левосторонний (и единственный правосторонний) вывод. Или, что то же самое, грамматика называется однозначной, если для каждой цепочки символов языка, заданного этой грамматикой, существует единственное дерево вывода. В противном случае грамматика называется неоднозначной. Рассмотренная в примере грамматика арифметических выражений, очевидно, является неоднозначной.

Слайд 25





Пример перехода от неоднозначной грамматики к однозначной
Если грамматика является неоднозначной, то необходимо попытаться преобразовать ее в однозначный вид. Для рассмотренной неоднозначной грамматики арифметических выражений над операндами a и b существует эквивалентная ей однозначная грамматика вида 
G'({+,—,*,/,(,),a,b},{S,T,E},P',S):
P':  	S ::= S+T | S - T | T
	T ::= T*E | T/E | E
	E ::= (S) | a | b
В этой грамматике для той же цепочки символов языка a*b+a возможен только один левосторонний вывод :
S ⇒ S+T ⇒ T+T ⇒ T*E+T ⇒ E*E+T ⇒ a*E+T ⇒ a*b+T ⇒ a*b+E ⇒ a*b+a
Описание слайда:
Пример перехода от неоднозначной грамматики к однозначной Если грамматика является неоднозначной, то необходимо попытаться преобразовать ее в однозначный вид. Для рассмотренной неоднозначной грамматики арифметических выражений над операндами a и b существует эквивалентная ей однозначная грамматика вида G'({+,—,*,/,(,),a,b},{S,T,E},P',S): P': S ::= S+T | S - T | T T ::= T*E | T/E | E E ::= (S) | a | b В этой грамматике для той же цепочки символов языка a*b+a возможен только один левосторонний вывод : S ⇒ S+T ⇒ T+T ⇒ T*E+T ⇒ E*E+T ⇒ a*E+T ⇒ a*b+T ⇒ a*b+E ⇒ a*b+a

Слайд 26





Как проверить, является ли грамматика однозначной?
Для доказательства неоднозначности грамматики достаточно найти в заданном ею языке хотя бы одну цепочку, которая допускала бы более чем один левосторонний или правосторонний вывод. Но это не всегда легко.
Если такая цепочка не найдена, нельзя утверждать, что данная грамматика является однозначной, поскольку перебрать все цепочки бесконечного языка невозможно. Следовательно, нужны другие способы проверки однозначности грамматики.
Доказана алгоритмическая неразрешимость проблемы однозначности в общем виде. То есть доказано, что не существует (и никогда не будет существовать) алгоритм, который бы позволял проверить, является ли произвольно заданная грамматика G однозначной или нет. Аналогично, не существует алгоритма, который бы позволял преобразовать заведомо неоднозначную грамматику G в эквивалентную ей однозначную грамматику G'.
Описание слайда:
Как проверить, является ли грамматика однозначной? Для доказательства неоднозначности грамматики достаточно найти в заданном ею языке хотя бы одну цепочку, которая допускала бы более чем один левосторонний или правосторонний вывод. Но это не всегда легко. Если такая цепочка не найдена, нельзя утверждать, что данная грамматика является однозначной, поскольку перебрать все цепочки бесконечного языка невозможно. Следовательно, нужны другие способы проверки однозначности грамматики. Доказана алгоритмическая неразрешимость проблемы однозначности в общем виде. То есть доказано, что не существует (и никогда не будет существовать) алгоритм, который бы позволял проверить, является ли произвольно заданная грамматика G однозначной или нет. Аналогично, не существует алгоритма, который бы позволял преобразовать заведомо неоднозначную грамматику G в эквивалентную ей однозначную грамматику G'.

Слайд 27





Как убедиться, что две грамматики эквивалентны?
Проблема эквивалентности грамматик в общем виде формулируется следующим образом: имеется две грамматики, G и G', необходимо построить алгоритм, который бы позволял проверить, являются ли эти две грамматики эквивалентными. То есть надо проверить утверждение L(G) = L(G').
Доказано, что проблема эквивалентности грамматик в общем случае алгоритмически неразрешима. Это значит, что не только до сих пор не существует алгоритма, который бы позволял проверить, являются ли две заданные грамматики эквивалентными, но и доказано, что такой алгоритм в принципе не существует, а значит, он никогда не будет создан.
Неразрешимость проблем эквивалентности и однозначности грамматик в общем случае совсем не означает, что они не разрешимы вообще. Для многих частных случаев — например, для определенных типов и классов грамматик (в частности для регулярных грамматик) — эти проблемы решены.
Описание слайда:
Как убедиться, что две грамматики эквивалентны? Проблема эквивалентности грамматик в общем виде формулируется следующим образом: имеется две грамматики, G и G', необходимо построить алгоритм, который бы позволял проверить, являются ли эти две грамматики эквивалентными. То есть надо проверить утверждение L(G) = L(G'). Доказано, что проблема эквивалентности грамматик в общем случае алгоритмически неразрешима. Это значит, что не только до сих пор не существует алгоритма, который бы позволял проверить, являются ли две заданные грамматики эквивалентными, но и доказано, что такой алгоритм в принципе не существует, а значит, он никогда не будет создан. Неразрешимость проблем эквивалентности и однозначности грамматик в общем случае совсем не означает, что они не разрешимы вообще. Для многих частных случаев — например, для определенных типов и классов грамматик (в частности для регулярных грамматик) — эти проблемы решены.

Слайд 28





Правила, задающие неоднозначность в грамматиках
Для КС-грамматик существуют виды правил, по наличию которых во всем множестве правил грамматики G можно утверждать, что она является неоднозначной:
1. A ::= AA | α.
2. A ::= AαA | β.
3. A ::= αA | Aβ | γ.
4. A ::= αA | αAβA | γ,
здесь A∈VN; α,β,γ∈(VN∪VT)*.
Если в заданной грамматике встречается хотя бы одно правило подобного вида (любого из приведенных вариантов), то доказано, что такая грамматика точно будет неоднозначной. 
Отсутствие правил указанного вида (всех вариантов) — это необходимое, но не достаточное условие однозначности грамматики. Если подобных правил во всем множестве правил грамматики нет, такая грамматика может быть однозначной, а может и не быть.
Описание слайда:
Правила, задающие неоднозначность в грамматиках Для КС-грамматик существуют виды правил, по наличию которых во всем множестве правил грамматики G можно утверждать, что она является неоднозначной: 1. A ::= AA | α. 2. A ::= AαA | β. 3. A ::= αA | Aβ | γ. 4. A ::= αA | αAβA | γ, здесь A∈VN; α,β,γ∈(VN∪VT)*. Если в заданной грамматике встречается хотя бы одно правило подобного вида (любого из приведенных вариантов), то доказано, что такая грамматика точно будет неоднозначной. Отсутствие правил указанного вида (всех вариантов) — это необходимое, но не достаточное условие однозначности грамматики. Если подобных правил во всем множестве правил грамматики нет, такая грамматика может быть однозначной, а может и не быть.



Похожие презентации
Mypresentation.ru
Загрузить презентацию