Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Расширенные грамматики




Формальное определение языка

Способы получения одних цепочек символов из других

1 Это можно сделать непосредственно, т.е. за одну операцию. Условное обозначение Þ.

Например, dÞh означает, что цепочку символов h можно получить из цепочки d за одну операцию.

Пример. Есть цепочка d=aAb и h=anb. Здесь, a,n,b - терминальные символы (обозначены строчными буквами), а А – нетерминальный символ. Пусть среди множества правил Р есть такое: A®nЄР. То есть нетерминальный символ АЄN можно заменить на терминальный n. Таким образом, за одну операцию из d можно получить цепочку h.

2 Одну цепочку из другой можно получить не за одну операцию. Условие обозначения Þ*

Например, a0 Þ*an

Это имеет место, если a0 = an, или существует последовательность непосредственно получаемых цепочек таких, что a0 Þ a1 Þ a2 Þ… an-1 Þ an

Способы получения цепочек символов необходимы, чтобы формально дать определение языка L(G), описываемое заданной грамматикой G. Язык L(G) – это множество цепочек w терминальных (и только терминальных!) символов, выводимых из начального (стартового, главного) нетерминального символа S. L(G)={w|S Þ*w,w –терминальные цепочки}.

Вертикальная черта после w в выражении означает, что w получены при условии что они выводятся из S. А звездочка означает, что этот вывод может происходить за произвольное количество операций. При этом используется множество P правил, описанное в грамматике G.

Ниже приводятся примеры грамматики и описываемые ими языки.

 

Пример 1 G=(T,N,P,S)

T={x, y, w, z} – алфавит терминальных символов. Только эти символы можно использовать.

N={S, A, B} – множество нетерминальных символов, из которых S – главный (стартовый) нетерминальный символ. Именно с него должен начинаться вывод цепочек (слов) в соответствии с множеством правил вывода P.

p={S®AB, A®x,A®y, B®w, B®z}.

Эти правила означают, что S можно заменить последовательностью нетерминальных символов AB. A®x, A®y означает, что А можно заменить на x или на y и т.д., осуществляя эти замены, получаем цепочки w из терминальных символов, составляющих формальный язык L(G).

L(G)={xw, yw, xz, yz}.

Только эти четыре цепочки (слова) и составляют язык, описываемый заданной грамматикой G.

Существуют т.н. расширенные грамматики. Они порождают те же языки, что и рассмотренные выше грамматики, но являются более наглядными.

Расширенные грамматики задаются парами

Ai ® ri,

где Ai ЄN – i-й нетерминальный символ,

ri – i-е регулярное выражение в алфавите N U I.

Нетерминальный символ первой пары является ГЛАВНЫМ (стартовым)для вывода цепочек.

Например, расширенная грамматика, эквивалентная описанной в примере выше, имеет вид:

S®AB,

A®x|y,

B®w|z.

Напомним, что вертикальная черта читается как “или”. То есть А может быть заменена на x или y, а В – на w или z.

 

Пример 2

Алфавит терминальных символов

Т={вино, коньяк, каша, борщ, мясо, кофе, чай}

Алфавит нетерминальных символов

N={ОБЕД, АЛКОГОЛЬ, ЕДА, ПИТЬЕ}

ОБЕД®АЛКОГОЛЬ ЕДА ПИТЬЕ

АЛКОГОЛЬ ® коньяк | вино

ЕДА ® борщ каша | мясо

ПИТЬЕ ® чай | кофе

В первой паре описан главный нетерминальный символ ОБЕД. Он описывается как последовательность из АЛКОГОЛЬ, ЕДА, ПИТЬЕ. В свою очередь, АЛКОГОЛЬ – это или коньяк, или вино.

ЕДА состоит из борща, за которым следует или каша, или мясо.

ПИТЬЕ – это или чай, или кофе.

С помощью упомянутых ранее действий над цепочками можно выразить самые разные варианты для нетерминального символа ОБЕД.

Например, ОБЕД ® АЛКОГОЛЬ * ЕДА ПИТЬЕ означает, что АЛКОГОЛЬ может повторяться в цикле нуль и более раз. После этого идут ЕДА и ПИТЬЕ.

Рассмотрим также другие варианты.

Например, АЛКОГОЛЬ ® КОНЬЯК + вино* означает, что должен быть хотя бы раз выпит коньяк, а затем может циклически приниматься вино. Количество этих циклов от нуля и более раз.

Или еще вариант: ЕДА ® борщ * мясо + каша

Борщ может употребляться от нуля и больше раз. Затем обязательно хотя бы один раз мясо и после этого – каша.

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




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 456; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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