ТОИ Лек 8.ppt
- Количество слайдов: 33
Лекция 8 Формальная грамматика. Способы описания формальных языков. Мета-язык. Нотация Бекуса-Наура. Синтаксические диаграммы
Предпосылка n - Естественный язык не может использоваться для записи алгоритма в силу его: изменчивости; неоднозначности; избыточности
Опр. n n n Формальный язык – это искусственный язык со строгим синтаксисом и полной смысловой определенностью. Любой конечный механизм задания языка называется грамматикой Разработка формальных грамматик была начата Хомским.
Опр. • Формальная грамматика - система правил, описывающая множество конечных последовательностей символов формального алфавита.
Опр. • Конечные цепочки символов называются предложениями формального языка, а само множество цепочек - языком, описываемым данной грамматикой.
Опр. n Синтаксисом языка называются правила построения предложений языка. n Синтаксис определяет множество формально правильных предложений
Опр. n Семантикой языка называются правила интерпретации предложений языка (выбор значения из некоторого множества значений). n Семантика определяется структурой предложения
Определение формальной грамматики G = { Vn, Vt, P, S} , где Vn – нетерминальный словарь Vt - терминальный словарь P – множество правил подстановок имеющие вид g -> h, где g и h цепочки, состоящие из терминальных и нетерминальных символов. S Vn - аксиома, начальный знак. n n n
Правила n n n Vn ∩ Vt =0. Нетерминальный и терминальный словари являются непересекающимися множествами их объединение определяет словарь символов языка V=Vn U Vt.
Пример n n Словари Vn и Vt создаются с помощью знаков алфавита. Последовательное применение правил порождает все возможные слова, входящие в терминальный словарь. Нетерминальный словарь в состав языка не включается. P 1: S ab и P 2: S a. Sb порождают язык L={ab, aabb, a 3 b 3, …}
Формальная грамматика n n n Последовательность грамматических правил создается путем логических заключений. Процесс создания языка начинается с аксиомы – исходного набора знаков, к которому затем применяются одно за другим установленные правила подстановки. Таким образом, из небольшого набора исходных конструкций порождаются все допустимые их комбинации
Пояснения • • Правило подстановок: если в преобразуемой цепочке есть слово g, то оно заменяется словом h. Получение на некотором шаге цепочки, состоящей только из терминальных символов, свидетельствует о прекращении процесса порождения - эта цепочка является правильной, завершенной конструкцией порождаемого языка.
Пример 1 n n Дана грамматика G: Vn ={S}; Vt ={*, 0}; P={S→SS; S→*S 0} Порожденным такой грамматикой языком L(G) будет L = {*, ***0, ***0**0, … }.
Пример 2 n n Vt = {a, b}; Vn = {S}, P= {S → a. Sa; S → b. Sb; S → a; S → b}.
Пример 2 • • Грамматика порождает язык, состоящий из всех «словперевертышей» в алфавите {a, b}, имеющих нечетную длину, например, abababa, bbbbb, baaaaaab и т. д. Цепочки типа αSα-1, где α-1 означает слово α, записанное справа налево
Пример 3 • • Пусть Vt ={а, б, . . . , я, А, Б, . . . , Я} - множество терминальных символов - букв русского алфавита. Vn = {Q, R, S} - нетерминальный словарь, где Q = {q 1, . qn} - множество имен людей в русском алфавите, R = {r 1, …, . rm} - множество глаголов, стоящих в третьем лице единственного числа настоящего времени. Система подстановок : S → QR Q → q 1, Q → q 2, …, Q → qm R→ r 1, R→ r 2, …, R→ rm
Разъяснение примера 2 • Грамматика порождает язык, состоящий из фраз типа: «такой-то делает то-то» , например, «Маша читает» , «Вася спит» и т. п. Работает грамматика следующим образом: на первом шаге определяется тип фразы; второй шаг порождает конкретное имя, а третий шаг конкретное действие (глагол).
Хомский выделил 4 типа грамматик n n n 1) Грамматики без ограничений. а) а. Ав. СД a. НД Порождение Ав. С H возможно только в контексте а. . Д. б) PQ QP Свобода выбора перестановок. Грамматики без ограничений не представляют интереса с точки зрения информатики - слишком много свободы.
2. Грамматика непосредственных составляющих n n n Пример такой грамматики: S AB A ac B b B cb
2. Грамматика непосредственных составляющих n Четыре вывода терминальных строк: S AB a. B ab S AB ac. B acb S AB a. B acb S AB accb n 2 и 3 –я строки двусмысленны n n
3) Контекстно-свободные грамматики n n n В левой части допускается лишь один нетерминальный символ (не зависит от контекста) Пусть задана грамматика S a. T T b. T T c
3) Контекстно-свободные грамматики n n Выводы: S a. T abc S a. T abbc Данная грамматика содержит рекурсивное правило подстановки: ас, аbbс, аbbbс, . . . , в общем виде abnc (n>=0).
4) Односторонние линейные грамматики n n Они допускают подстановки вида: А аb
Способы описания формальных языков • • Для описания языка-объекта должен применяться метаязык. Метаязык должен обладать некоторыми свойствами формального языка, чтобы однозначно определять конструкции языка-объекта
Способы описания формальных языков • • Метаязык должен быть сначала описан сам. Для описания любого метаязыка можно использовать язык естественный. • Таким образом, для построения формального языка необходимо средствами естественного языка описать метаязык, а затем посредством метаязыка описать язык формальный
Язык Бекуса-Наура • Нотации Бекуса-Наура (форма) (ФБН). Для формирования предложений используются метасимволы: { <, >, : : =, | }. • Угловые скобки - служат для обрамления нетерминального символа. • Символ «: : =» читается «по определению есть» ; • символ «|» - «или» .
Пример ФБН «идентификатор» • На естественном языке: «Идентификатор - это любая последовательность букв и цифр, начинающаяся с буквы» . • • В форме Бекуса-Наура : <идентификатор>: : =<буква>|<идентифик атор><буква> |<идентификатор><цифра> <буква>: : = а|b|c|… <цифра>: : = 0|1|2|3|. . . |9.
Пример n n n Записать определение арифметического выражения Vt = {А, С, +, - }, <переменная>: : = А С <выражение>: : =<переменная> <перемен ная>+<переменная> А, С, А+С, С+А, А-С, С-А, А+А, А-А, С+С, СС
Синтаксические диаграммы • • Синтаксическая диаграмма - это схема (графическое представление) описания какого-либо нетерминального символа языка-объекта. Схема всегда имеет один вход и один выход. Элементами схемы могут служить терминальные символы языка-объекта, заключенные в окружность (или овал) или нетерминальные символы (понятия) языкаобъекта, заключенные в прямоугольник.
Идентификатор буква цифра буква а . . . я 0 . . . 9
Примеры 1. Опишите формальную грамматику, порождающую множество целых двоичных чисел. 2. Измените описание грамматики из примера таким образом, чтобы она описывала конструкции типа «Имя_1, Имя_2. . Имя М делают_то-то» . 3. Что определяет следующая нотация Бекуса-Наура: <формула>: : =<цифра>|(<формула><знак><форму ла>) <знак>: : = +| — | * <цифра>: : = 0|1|2|3|4|5|6|7|8|9
Примеры С помощью синтаксических диаграмм опишите следующие конструкции языка PASCAL: 1. оператор цикла с предусловием WHILE. . . DO; 2. составной оператор; 3. оператор цикла с параметром FOR. . . DO; 4. оператор выбора CASE.
Контрольные вопросы n n Дайте определение формальной грамматики. Какие предложения допускает грамматика: S ->b, S -> b. S, A ->a. Sa. ? Какие предложения допускает ФБК: <SS>: : = 0|1|<SS>. ?
ТОИ Лек 8.ppt