Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Синтаксические диаграммы. Дана цепочка символов (слов) и грамматика




Задачи анализа

Лекция 2

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

Например, цепочка [[x]] принадлежит языку L(G2), описанному грамматикой G2.

G2=(T2, N2, P2, A), где

T2 = {х, +, [, ]}

N2 ={А,В}

P2 = {А®х, А®[В], В®А, В®В+А}

Действительно, заданную цепочку можно получить, применив последовательно по одному из правил вывода, заданного в Р2.

АÞ [В]Þ [А]Þ [[В]]Þ [[А]]Þ [[х]]

Следовательно, цепочка [[х]] принадлежит формальному языку L(G2).

Различают две стратегии: стратегия анализа сверху вниз и снизу вверх. При анализе сверху вниз для построения вывода заданной цепочки начинают с ГЛАВНОГО нетерминального символа и выбирают правила из заданного множества так, чтобы прийти к заданной цепочке w.

В примере [[х]] в грамматике G2 главный нетерминальный символ А. Среди заданного множества правил вывода для А есть два: А ® х и А ® [В]. Первое из них не дает возможности вывести [[х]]. Берем А ® [В], то есть А заменяем на [В]. Теперь нужно выбирать из двух правил вывода для В.

В ® А и В ® В+А.

Выбираем В ® А, заменяем в [В] В на А и получаем [А]. Вновь из двух правил вывода для А выбираем А ® [В]. Заменяем в [А] А на [В]. Получаем [[В]]. Вновь из двух правил для вывода В выбираем В ® А и заменяем в [[В]] В на А. Получим [[А]]. И, наконец, из двух правил вывода для А выбираем А ® х. Заменяем в [[А]] А на х и получаем требуемую цепочку [[х]]. Таким образом, доказано, что заданная цепочка действительно принадлежит языку, определяемому грамматикой G2.

При анализе сверху вниз основная проблема в определении необходимого правила V ® ai для построения следующего шага вывода цепочки w, когда в найденной части А Þ* nVb известны левый нетерминальный символ V и n правил вывода V ® a1, V ®a2, …V ® an с левой частью V. Решение этой проблемы, в частности, возможно с помощью алгоритма LА(1) – анализа, который определяет необходимое правило V ® ai в зависимости от первого еще не распознанного символа х в цепочке w.

Осуществляется LA(1) – анализ путем создания для нетерминалов процедур анализа. Эти процедуры, как правило, оказываются взаимно рекурсивными и часто неэффективными.

Для многих грамматик LA(1) – анализ в таком виде не используется. Тогда приходят к расширенным грамматикам или к синтаксическим диаграммам (графикам).

Это ориентированный граф с двумя фиксированными вершинами: входной, из которой дуги только выходят, и выходной, в которую дуги только входят.

Дуги этого графа могут быть помечены терминальными и нетерминальными символами. В расширенной диаграмме с терминальным Т и нетерминальным N алфавитами каждому нетерминалу А и его правилу вывода А ® a, где a - регулярное выражение в алфавите T U N, отвечает одна синтаксическая диаграмма. При обозначении дуг, помеченных терминальными символами, условились эти символы писать строчными буквами и заключать в окружность.

Нетерминальные символы условились писать заглавными буквами и размещать в прямоугольнике.

Регулярное выражение будет обозначаться греческими буквами внутри ромба.

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

 

Рисунок 1

 

Алгоритм LА(1) – анализа может быть применен при условиях, что в синтаксических диаграммах нет непомеченных дуг от входной вершины к выходной и в каждом разветвлении ветки начинаются с неодинаковых последующих терминальных символов.

По синтаксической диаграмме строится функция анализа выводимых из нетерминала цепочек символов.

Прохождению дуги, помеченной терминальным символом а, отвечает распознавание этого символа (т.е. а) в предъявленном для анализа слове и сдвиг на следующий символ в этом слове (чтение очередного символа из слова).

Прохождению дуги, помеченной нетерминальным символом А, отвечает вызов функции распознавания цепочек, которые выводятся из А. Перед вызовом этой функции предварительно должен быть прочитан первый терминальный символ х, который выводят из А, т.е. АÞ* х…Функция успешно анализирует цепочку w, выводимую из нетерминала А, если в соответствии с синтаксической диаграммой, прочитав посимвольно всю цепочку w, удается попасть из входной вершины в выходную.




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


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


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



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




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