КАТЕГОРИИ: Архитектура-(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. Повторив аналогичные действия для всех правил грамматики, получим:
Для входной цепочки 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |