
SPO-3 Формальные языки и грамматики.pptx
- Количество слайдов: 25
Формальные языки и грамматики
Формальные языки и грамматики Теория формальных языков изучает множества строк символов (предложений), их представление, структуру и свойства. 2
Формальные языки и грамматики Алфавит (словарь) конечное множество символов Символ не определяемое понятие Примеры алфавитов: – латинский {А, В, . . . , Z}; – греческий { , , . . . , }; – бинарный {0, 1}; – языка Паскаль {and, begin, case, do, …}. 3
Формальные языки и грамматики Предложение (строка, слово) любая цепочка конечной длины, составленная из символов алфавита. Пустое предложение ( ) предложение, не содержащее ни одного символа. 4
Формальные языки и грамматики Длина предложения количество символов в предложении. Обычно обозначается знаком | |. Например, | | = 0 5
Формальные языки и грамматики Если V — некоторый алфавит, то V* обозначает множество всех предложений, составленных из символов алфавита V, включая и пустое предложение. V+ множество V { }. 6
Формальные языки и грамматики Пример. V = {0, 1} V* = { , 0, 1, 00, 01, 10, 11, 000, . . . } V+ = {0, 1, 00, 01, 10, 11, . . . } 7
Формальные языки и грамматики Язык любое множество предложений над некоторым алфавитом. Если V – алфавит, L – язык, то L V*. 8
Формальные языки и грамматики Способы задания языков 1. Перечисление 2. Распознавание 3. Порождение 9
Формальные языки и грамматики Перечисление Если язык конечен, достаточно просто перечислить все предложения, т. е. составить список. Для бесконечных языков это невозможно. 10
Формальные языки и грамматики Распознавание Необходимо дать алгоритм, который определяет, есть ли данное предложение в данном языке или нет. 11
Формальные языки и грамматики Порождение Необходимо описать процедуру, которая систематически порождает предложения языка последовательно в некотором порядке. 12
Формальные языки и грамматики Взаимосвязь между распознаванием и порождением Если имеется алгоритм, который распознает предложения языка над алфавитом V, то на его основе можно построить порождающий механизм — алгоритм, порождающий этот язык. Можно систематически генерировать все предложения из множества V*, проверять каждое предложение на принадлежность его языку с помощью распознающего механизма и выводить в результирующий список только предложения языка. 13
Формальные языки и грамматики Взаимосвязь между порождением и распознаванием Если имеется порождающая процедура для языка L, то на ее основе можно построить распознающую процедуру для этого языка. Чтобы определить, имеется ли предложение х в языке L, достаточно с помощью порождающей процедуры последовательно порождать все предложения языка L и сравнивать каждое с х. Если х порождается, то распознающая процедура заканчивается, распознав х. (если предложение х не принадлежит L, то распознающая процедура никогда не закончится) 14
Формальные языки и грамматики Имеется один класс порождающих систем, широко используемый при создании языков программирования – грамматики. 15
Формальные языки и грамматики Первоначально понятие грамматики было формализовано лингвистами при изучении естественных языков. Они интересовались не только определением, что является или не является правильным предложением языка, но также искали способы описания структуры предложений. Одной из целей была разработка формальной грамматики, способной описывать естественный язык. Предполагалось, что, заложив в компьютер формальную грамматику, например, английского языка, можно сделать его «понимающим» этот язык, и по словесной формулировке проблем получать их решения, осуществлять с помощью компьютера перевод с одного языка на другой и т. д. 16
Формальные языки и грамматики Формальное определение грамматики Грамматикой называют четверку вида G = (Vt, Vn, P, S), где Vt – алфавит, символы которого называются терминальными (терминалами) Vn – алфавит, символы которого называются нетерминальными (нетерминалами) P – набор порождающих правил S – начальный символ (аксиома) 17
Формальные языки и грамматики Из терминальных символов строятся цепочки (предложения), порождаемые грамматикой. Нетерминальные символы используются при построении цепочек. Они могут входить в промежуточные цепочки, но не должны входить в результат. 18
Формальные языки и грамматики Множества терминальных и нетерминальных символов не пересекаются: Vt Vn = Ø Полный алфавит (словарь) грамматики определяется как V = Vt Vn 19
Формальные языки и грамматики Набор порождающих правил P состоит из пар вида (α, β), где α V+ – левая часть правила; β V* – правая часть правила Обычно правила записываются так: α→β Цепочки α, β строятся из символов алфавита V, например: <сумма> <слагаемое> + <слагаемое> 20
Формальные языки и грамматики Начальный символ S является отправной точкой в получении любого предложения языка. Любая строка, которую можно вывести из начального символа, называется сентенциальной формой. Предложением языка будет являться сентенциальная форма, содержащая только терминальные символы. 21
Формальные языки и грамматики Формальное определение языка Языком, порождаемым грамматикой G, называется множество всех её терминальных сентенциальных форм. Язык, порождаемый грамматикой G, обозначается L(G) 22
Формальные языки и грамматики Как правило, предложения языка можно генерировать с помощью более чем одной грамматики. Две грамматики, порождающие один и тот же язык, называют эквивалентными. 23
Формальные языки и грамматики Пример 1. Грамматика языка скобочных выражений. Vt = { (, ) } Vn = { выражение } P = { выражение , выражение ( выражение ), выражение } S = выражение L(G) = { , ( ) ( ), ( ( ) ), … } 24
Формальные языки и грамматики Пример 2. Грамматика идентификаторов. Vt = { 0. . 9, a. . z } Vn = { идентификатор, буква, цифра } P = { идентификатор буква, идентификатор цифра } S = идентификатор L(G) = { a, …, z, aa, …, az, a 0, …, a 9 , … } 25