русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пример 2.6


Дата добавления: 2013-12-23; просмотров: 1297; Нарушение авторских прав


ТИП 3.

Тип 2.

Тип 1.

Тип 0.

Классификация грамматик и языков по Хомскому

Пример 2.5

Грамматики G1 = ({0,1}, {A,S}, P1, S) и G2 = ({0,1}, {S}, P2, S), где

P1={ S ® 0A1, 0A ® 00A1, A ® e}, P2={ S ® 0S1 | e}

являются почти эквивалентными, так как

L(G1)={0n1n | n>0}, а L(G2)={0n1n | n³0}, то есть L(G2) состоит из всех цепочек языка L(G1) и пустой цепочки, которая в L(G1) не входит.

 

Рассмотрим классификацию грамматик, предложенную Н.Хомским, основанную на виде их правил.

 

Грамматика G = (VT, VN, P, S) называется грамматикой типа 0(или грамматикой без ограничений), если на правила вывода не накладывается никаких ограничений (кроме тех, которые указаны в определении грамматики).

 

Грамматика G = (VT, VN, P, S) называется неукорачивающей грамматикой, если для каждого правила вывода a ® b (кроме S ® e) выполняется соотношение | a | £ | b |. В том случае, когда S ® e Î P, символ S не встречается в правых частях правил вывода.

 

Грамматика G = (VT, VN, P, S) называется контекстно-зависимой (КЗ), если каждое правило из P имеет вид a ® b,

где a = x1Ax2; b = x1gx2; A Î VN; g Î (VT È VN)+; x1,x2 Î (VT È VN)*.

 

Грамматику типа 1 можно определить как неукорачивающую либо как контекстно-зависимую.

Выбор определения не влияет на множество языков, порождаемых грамматиками этого класса, поскольку доказано, что множество языков, порождаемых неукорачивающими грамматиками, совпадает с множеством языков, порождаемых КЗ-грамматиками.

 

Грамматика G = (VT, VN, P, S) называетсяконтекстно-свободной (КС), если каждое правило из Р имеет вид A ® b, где A Î VN, b Î (VT È VN)+.



 

Грамматика G = (VT, VN, P, S) называется укорачивающей контекстно-свободной (УКС), если каждое правило из Р имеет вид A ® b, где A Î VN,

b Î (VT È VN)*.

 

Грамматику типа 2 можно определить как контекстно-свободную либо как укорачивающую контекстно-свободную.

Возможность выбора обусловлена тем, что для каждой УКС-грамматики существует почти эквивалентная КС-грамматика.

 

Грамматика G = (VT, VN, P, S) называется праволинейной, если каждое правило из Р имеет вид A ® tB либо A ® t, где A Î VN, B Î VN, t Î VT.

 

Грамматика G = (VT, VN, P, S) называется леволинейной, если каждое правило из Р имеет вид A ® Bt либо A ® t, где A Î VN, B Î VN, t Î VT.

 

Грамматику типа 3 (регулярную, Р-грамматику) можно определить как праволинейную либо как леволинейную.

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

 

Очевидно, что в примере 2.3 грамматика G2 является неукорачивающей, грамматика G3 - контекстно-свободной, грамматика G4 - праволинейной.

 

Соотношения между типами грамматик:

- любая регулярная грамматика является КС-грамматикой;

- любая регулярная грамматика является УКС-грамматикой;

- любая КС-грамматика является КЗ-грамматикой;

- любая КС-грамматика является неукорачивающей грамматикой;

- любая КЗ-грамматика является грамматикой типа 0;

- любая неукорачивающая грамматика является грамматикой типа 0.

Замечание: УКС-грамматика, содержащая правила вида A ® e, не является КЗ-грамматикой и не является неукорачивающей грамматикой.

 

Язык L(G) называется языком типа k, если его можно описать грамматикой типа k.

 

Соотношения между типами языков:

- каждый регулярный язык является КС-языком, но существуют КС-языки, которые не являются регулярными (например, L = {anbn | n>0});

- каждый КС-язык является КЗ-языком, но существуют КЗ-языки, которые не являются КС-языками (например, L = {anbncn | n>0});

- каждый КЗ-язык является языком типа 0.

Замечание: УКС-язык, содержащий пустую цепочку, не является КЗ-языком.

 

Следует отметить, что если язык задан грамматикой типа k, то это не значит, что не существует грамматики типа k’ (k’>k), описывающей тот же язык. Поэтому, когда говорят о языке типа k, обычно имеют в виду максимально возможный номер k.

КЗ-грамматика G1 = ({0,1}, {A,S}, P1, S) и

КС-грамматика G2 = ({0,1}, {S}, P2, S), где

P1={ S ® 0A1, 0A ® 00A1, A ® e}, P2={S ® 0S1 | 01},

описывают один и тот же язык L = L(G1) = L(G2) = { 0n1n | n>0}.

Язык L является КС-языком, так как существует КС-грамматика, его описывающая. Но он не является регулярным языком, потому что не существует регулярной грамматики, описывающей этот язык [3].

 



<== предыдущая лекция | следующая лекция ==>
Пример 2.4 | Пример 2.8


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.