![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Атрибутная схема для алгоритма сопоставления образцов
Алгоритмы 9.5 и 9.6 являются " универсальными" в том смысле, что конкретные грамматики выражений и образцов являются, по-существу, параметрами этих алгоритмов. В то же время, для каждой конкретной грамматики можно написать свой алгоритм поиска образцов. Например, в случае нашей грамматики выражений и приведенных на рис. 9.25 образцов алгоритм 9.6 может быть представлен атрибутной грамматикой, приведенной ниже. Наследуемый атрибут Match содержит упорядоченный список (вектор) образцов для сопоставления в поддереве данной вершины. Каждый из образцов имеет вид либо < op op-list> (op - операция в данной вершине, а op- list - список ее операндов), либо представляет собой нетерминал N. В первом случае op-list " распределяется" по потомкам вершины для дальнейшего сопоставления. Во втором случае сопоставление считается успешным, если есть правило N -> op fPatig, где w состоит из образцов, успешно сопоставленных потомкам данной вершины. В этом случае по потомкам в качестве образцов распределяются элементы правой части правила. Эти два множества образцов могут пересекаться. Синтезируемый атрибут Pattern - вектор логических значений, дает результат сопоставления по вектору-образцу Match. Таким образом, при сопоставлении образцов могут встретиться два случая: 1. Вектор образцов содержит образец < op fPatig>, где op - операция, примененная в данной вершине. Тогда распределяем образцы Pati по потомкам и сопоставление по данному образцу считаем успешным (истинным), если успешны сопоставления элементов этого образца по всем потомкам. 2. Образцом является нетерминал N. Тогда рассматриваем все правила вида N -> op fPatig. Вновь распределяем образцыPati по потомкам и сопоставление считаем успешным (истинным), если успешны сопоставления по всем потомкам. В общем случае успешным может быть сопоставление по нескольким образцам. Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Отметим, что в общем случае в потомки одновременно передается неско-лько образцов для сопоставления. В приведенной ниже атрибутной схеме не рассматриваются правила выбора покрытия наименьшей стоимости (см. предыдущий раздел). Выбор оптимального покрытия может быть сделан еще одним проходом по дереву, аналогично тому, как это было сделано выше. Например, в правиле с '+' имеется несколько образцов для Reg, но реального выбора одного из них не осуществляется. Кроме того, не уточнены некоторые детали реализации. В частности, конкретный способ формирования векторов Match и Pattern. В тексте употребляется термин " добавить", что означает добавление к вектору образцов очередного элемента. Векторы образцов записаны в угловых скобках. Этому правилу соответствует один образец 2. Поэтому в качестве образцов потомков через их атрибуты Match передаются, соответственно, < '+' Reg Const> и < Reg>. RULEReg:: = '+' Reg RegSEMANTICSif (Match< 0> содержит Reg в позиции i) {Match< 2> =< Reg, Reg, Reg>; Match< 3> =< Const, Reg, < '@' '+' Reg Const> >; }if (Match< 0> содержит образец < '+' Reg Const> в позиции j) {добавить Reg к Match< 2> в некоторой позиции k; добавить Const к Match< 3> в некоторой позиции k; }if (Match< 0> содержит образец < '+' Reg Const> в позиции j)Pattern< 0> [j]=Pattern< 2> [k]& Pattern< 3> [k]; if (Match[0] содержит Reg в i-й позиции)Pattern< 0> [i]=(Pattern< 2> [1]& Pattern< 3> [1]) |(Pattern< 2> [2]& Pattern< 3> [2]) |(Pattern< 2> [3]& Pattern< 3> [3]).Образцы, соответствующие этому правилу, следующие: (4) Reg -> '+' Reg Const, (5) Reg -> '+' Reg Reg, (6) Reg -> '+' Reg '@' '+' Reg Const.Атрибутам Match второго и третьего символов в качестве образцов при сопоставлении могут быть переданы векторы < Reg, Reg, Reg> и < Const, Reg, < '@' '+' Reg Const> >, соответственно. Из анализа других правил можно заключить, что при сопоставлении образцов предков левой части данного правила атрибуту Match символа левой части может быть передан образец < '+' Reg Const> (из образцов 2, 3, 6) или образец Reg. RULEReg:: = '@' RegSEMANTICS if (Match< 0> содержит Reg в i-й позиции) Match< 2> =< < '+' Reg Const>, Reg>; if (Match< 0> содержит < '@' '+' Reg Const> в j-й позиции) добавить к Match< 2> < '+' Reg Const> в k позиции; if (Match< 0> содержит Reg в i-й позиции)Pattern< 0> [i]=Pattern< 2> [1]|Pattern< 2> [2]; if (Match< 0> содержит < '@' '+' Reg Const> в j-й позиции) Pattern< 0> [j]=Pattern< 2> [k].Образцы, соответствующие этому правилу, следующие: Соответственно, атрибуту Match второго символа в качестве образцов при сопоставлении могут быть переданы < '+' Reg Const> (образец 3) или < Reg> (образец 7). Из анализа других правил можно заключить, что при сопоставлении образцов предков левой части данного правила атрибуту Match могут быть переданы образцы < '@' '+' Reg Const> (из образца 6) и Reg. RULEReg:: = ConstSEMANTICSif (Pattern< 0> содержит Const в j-й позиции)Pattern< 0> [j]=true; if (Pattern< 0> содержит Reg в i-й позиции)Pattern< 0> [i]=true.Для дерева рис. 9.24 получим значения атрибутов, приведенные на рис. 9.28. Здесь M обозначает Match, P - Pattern, C -Const, R - Reg.
Аннотация: В данной лекции рассматривается промежуточное представление программы, которое предназначено прежде всего для удобства генерации кода и/или проведения различных оптимизаций. Рассматриваются часто используемые формы промежуточного представления такие, как ориентированный граф (в частности, абстрактное синтаксическое дерево, в том числе атрибутированное), трехадресный код (в виде троек или четверок), префиксная и постфиксная запись. Также рассмотрена виртуальная Java-машина и ее команды. Приведены основные понятия, графическая интерпретация промежуточного представления программ и части программного кода. Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе В процессе трансляции компилятор часто используют промежуточное представление (ПП) исходной программы, предназначенное прежде всего для удобства генерации кода и/или проведения различных оптимизаций. Сама форма ПП зависит от целей его использования. Наиболее часто используемыми формами ПП является ориентированный граф (в частности, абстрактное синтаксическое дерево, в том числе атрибутированное), трехадресный код (в виде троек или четверок), префиксная и постфиксная запись.
|