![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Определение формальной грамматики
Формальная грамматика – это математическая система, определяющая язык посредством порождающих правил. Определение Формальной грамматикой называется четверка вида:
где VN - конечное множество нетерминальных символов грамматики (обычно прописные латинские буквы); VT - множество терминальных символов грамматики (обычно строчные латинские буквы, цифры, и т.п.), VT Ç VN =Æ ; Р – множество правил вывода грамматики, являющееся конечным подмножеством множества (VTÈ VN)+ ´ (VTÈ VN)*; элемент (a, b) множества Р называется правилом вывода и записывается в виде a®b (читается: «из цепочки a выводится цепочка b»); S - начальный символ грамматики, S Î VN. Для записи правил вывода с одинаковыми левыми частями вида Пример Грамматика G1=({0, 1}, {A, S}, P1, S), где множество Р состоит из правил вида: 1) S® 0A1; 2)0A® 00A1; 3) A®e. Определение Цепочка b Î (VTÈ VN)* непосредственно выводима из цепочки Определение Цепочка b Î (VTÈ VN)* выводима из цепочки Пример В грамматике G1 SÞ *000111, т.к. существует вывод Определение Языком, порожденным грамматикой Пример Для грамматики G1 язык L(G1)={0n1n | n³ 0}. Определение Цепочка Определение Языком, порожденным грамматикой G называется множество терминальных сентенциальных форм грамматики.
Классификация языков и грамматик по Хомскому Классификация грамматик по Хомскому осуществляется по структуре их правил вывода. Выделяется четыре типа грамматик. Тип 0. Грамматика Тип 1. Грамматика Тип 2. Грамматика Соотношение типов грамматик и языков представлено на рисунке 1.1.
Р – регулярная грамматика; КС – контекстно-свободная грамматика; КЗ – контекстно-зависимая грамматика; Тип 0 – грамматика типа 0.
Рисунок 1.1 – Соотношение типов формальных языков и грамматик
Тип 3. Грамматика Грамматика Определение Язык L(G) называется языком типа k, если его можно описать грамматикой типа k, где k – максимально возможный номер типа грамматики. Пример Примеры различных типов формальных языков и грамматик по классификации Хомского. Терминалы будем обозначать строчными символами, нетерминалы – прописными буквами, начальный символ грамматики – S. а) Язык типа 0 L(G)= 1) S ® aaCFD; 2) AD ® D; 3) F ® AFB | AB; 4) Cb ® bC; 5) AB ® bBA; 6) CB ® C; 7) Ab ® bA; 8) bCD ® e.
б) Контекстно-зависимый язык L(G)={anbncn | n³ 1} определяется грамматикой с правилами вывода: 1) S ® aSBC | abc ; 2) bC ® bc; 3) CB ® BC; 4) cC ® cc; 5) BB ® bb.
в) Контекстно-свободный язык L(G)={(ab)n(cb)n | n> 0 } определяется грамматикой с правилами вывода: 1) S ® aQb | accb; 2) Q ® cSc.
г) Регулярный язык L(G)={w^ | wÎ {a, b}+, где нет двух рядом стоящих а} определяется грамматикой с правилами вывода: 1) S ® A^ | B^; 2) A ® a | Ba; 3) B ® b | Bb | Ab.
Эквивалентность грамматик
Определение Грамматики G1 и G2 называются эквивалентными, если они определяют один и тот же язык, т.е. Определение Грамматики G1 и G2 называются почти эквивалентными, если заданные ими языки различаются не более чем на пустую цепочку символов т.е. Пример Для грамматики G1 эквивалентной будет грамматика G2 = ({0, 1}, {S}, P2, S), где множество правил вывода P2 содержит правила вида S ® 0S1| e. Почти эквивалентной для грамматики G1 будет грамматика G3 = ({0, 1}, {S}, P3, S), где множество правил вывода P3 содержит правила вида S ® 0S1|01.
Формы Бэкуса - Наура Цепочки языка могут содержать метасимволы, имеющие особое назначение. Метаязык, предложенный Бэкусом и Науром (БНФ) использует следующие обозначения: - символ «:: =» отделяет левую часть правила от правой (читается: «определяется как»); - нетерминалы обозначаются произвольной символьной строкой, заключенной в угловые скобки «< » и «> »; - терминалы - это символы, используемые в описываемом языке; - правило может определять порождение нескольких альтернативных цепочек, отделяемых друг от друга символом вертикальной черты «|» (читается: «или». Для повышения удобства и компактности описаний, в расширенных БНФ вводятся следующие дополнительные конструкции (метасимволы): - квадратные скобки «[» и «]» означают, что заключенная в них синтаксическая конструкция может отсутствовать; - фигурные скобки «{» и «}» означают повторение заключенной в них синтаксической конструкции ноль или более раз; - сочетание фигурных скобок и косой черты «{/» и «/}» используется для обозначения повторения один и более раз; - круглые скобки «(» и «)» используются для ограничения альтернативных конструкций; - кавычки используются в тех случаях, когда один из метасимволов нужно включить в цепочку обычным образом. Пример Правила, определяющие понятие «идентификатор» некоторого языка программирования, будут выглядеть следующим образом:
< буква> :: = a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z < цифра> :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 < идентификатор> :: = < буква> { (< буква> | < цифра> ) }
Диаграммы Вирта
В метаязыке диаграмм Вирта используются графические примитивы, представленные на рисунке 1.4.1. При построении диаграмм учитывают следующие правила: - каждый графический элемент, соответствующий терминалу или нетерминалу, имеет по одному входу и выходу, которые обычно изображаются на противоположных сторонах; - каждому правилу соответствует своя графическая диаграмма, на которой терминалы и нетерминалы соединяются посредством дуг; - альтернативы в правилах задаются ветвлением дуг, а итерации - их слиянием; - должна быть одна входная дуга (располагается обычно слева или сверху), задающая начало правила и помеченная именем определяемого нетерминала, и одна выходная, задающая его конец (обычно располагается справа и снизу); - стрелки на дугах диаграмм обычно не ставятся, а направления связей отслеживаются движением от начальной дуги в соответствии с плавными изгибами промежуточных дуг и ветвлений.
Пример 1.4.1. Правила, определяющие понятие «идентификатор» некоторого языка программирования, показаны на рисунке 1.3. Цифра
Буква
Идентификатор
Рисунок 1.3 – Диаграмма Вирта понятия «идентификатор»
Популярное:
|
Последнее изменение этой страницы: 2016-04-11; Просмотров: 1423; Нарушение авторского права страницы