Студопедия

КАТЕГОРИИ:


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

Нисходящий разбор




МЕТОДЫ СИНТАКСИЧЕСКОГО АНАЛИЗА

 

Будем считать, что цепочка w Î L(G) для некоторой КС-грамматики G проанализирована или разобрана, если известно ее дерево вывода в данной грамматике.

Обычно компилятор выполняет синтаксический анализ путем моделирования МП-автомата, анализирующего входные цепочки.

Пусть заданы КС-грамматика G=(N, T, P, S), правила которой пронумерованы целыми числами 1, 2, …, р и цепочка a Î (N È Т). Тогда:

- левым разбором цепочки a называется последовательность правил, примененных при ее левом выводе из S;

- правым разбором цепочки a называется последовательность правил, примененных при ее левом выводе из S;

 

 

Рассмотрим выполнение синтаксического анализа КС-грамматик при условии, что анализируемая цепочка рассматривается слева справа (левый анализ).

Стратегия левого нисходящего разбора предполагает заполнять дерево разбора, начиная с корня, и двигаться слева направо, направляясь к кроне.

Известно, что для любой грамматики G можно построить недетерминированный МП-преобразователь, который может быть основой синтаксического анализатора.

 

Пусть G=(N, T, P, S) - КС-грамматика, в которой правила пронумерованы числами от 1 до р.

Левым анализатором Ml называется недетерминированный МП-преобразователь ({q}, T, NÈ Т, {1, 2, …, p}, d, q, S, {q}), где d определяется следующим образом:

1) Если A®a - правило из Р с номером i, то (q, a, i) Î d(q, e, A)

2) d (q, a, a) ={(q, e, e)} для всех a Î T

Пример. Построим левый анализатор для грамматики G:

(1) E®E+T

(2) E®T

(3) T®T*P

(4) T®P

(5) P®I

(6) P®(E)

Ml = ({q}, {i, +, *, (,)}, {i, +, *, (,), E, T, P}, {1, 2, 3, 4, 5, 6}, d, q, E, {q})

Определим функцию d:

1. По правилу (2) определения d (q, a, a) ={(q, e, e)} для всех a Î T

2. Для правила грамматики E®E+T по правилу (1) определения в функцию d(q, e, E) необходимо включить элемент (q, E+T, 1)

3. Повторив аналогичные действия для всех правил грамматики, получим:

1) d(q, e, E)={(q, E+T, 1), (q, T, 2)}
2) d(q, e, T)={(q, T*P, 3), (q, P, 4)}
3) d(q, e, P)={(q, (E), 6), (q, I, 5)}
4) d(q, a, a)={(q, e, e)} для всех a Î{i, +, *, (,)}

 

Для входной цепочки i + i * i МП-анализатор Ml среди других может выполнить следующую последовательность тактов:

(q, i + i * i, E, e) ├

(q, i + i * i, E+T, 1) ├

(q, i + i * i, T+T, 12) ├

(q, i + i * i, P+T, 124) ├

(q, i + i * i, i+T, 1245) ├

(q, + i * i, +T, 1245) ├

(q, i * i, T, 1245) ├

(q, i * i, T*P, 12453) ├

(q, i * i, P*P, 124534) ├

(q, i * i, i*P, 1245345) ├

(q, * i, *P, 1245345) ├

(q, i, P, 1245345) ├

(q, i, i, 12453455) ├

(q, e, e, 1245345)

По определению построенный анализатор является недетерминированным. Чтобы воспользоваться таким анализатором на практике, необходимо преобразовать его в детерминированный.

Нисходящий анализ налагает ограничение на КС-грамматику: она не должна содержать правил с левой рекурсией.

 




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


Дата добавления: 2014-01-03; Просмотров: 704; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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