Устранение леворекурсивных правил грамматики - «Бильгаева Н.Ц. Теория алгоритмов, формальных языков, грамматик и автоматов Учебное пособие для студентов специальности ...»
Алгоритм устранения левой рекурсии
Грамматика, разбирающая выражение
Синтаксические анализаторы. Нисходящие анализаторы
КС-языки и грамматики.
Устранение левой рекурсии
Леворекурсивные грамматики
Архитектура- Астрономия- Биология- Биотехнологии- Военное дело- Высокие технологии- География- Геология- Государство- Демография- Дом- Журналистика и СМИ- Изобретательство- Иностранные языки- Информатика- Искусство- История- Компьютеры- Косметика- 55 Кулинария- Культура- Лингвистика- Литература- Маркетинг- Математика- Машиностроение- Медицина- Менеджмент- Механика- Науковедение- Образование- Охрана труда- Педагогика- Полиграфия- Политика- Право- Приборостроение- Программирование- Производство- Промышленность- Психология- Религия- Связь- Сельское хозяйство- Социология- Спорт- Строительство- Торговля- Транспорт- Туризм- Физика- Философия- Финансы- Химия- Экология- Экономика- Электроника- Электротехника- Энергетика- Юриспруденция- Ядерная техника- Обобщенная грамматика, зачастую, более проста и наглядна. Тем не менее следует помнить, что для любой обобщенной КС-грамматики существует эквивалентная неукорачивающая КС-грамматика. Проведем его, как обычно, конструктивно, построением неукорачивающей грамматики. Во первых, нужно определить, порождает ли исходная грамматика пустую цепочку. Пусть S - начальный символ исходной грамматики G. Определим в G множество нетерминалов X i , из которых пустую цепочку можно получить за i шагов, и множество новых нетерминалов Z i. Таким образом мы определим аннулирующие нетерминалы. В противном случае, заменим в исходной грамматике во всех правилах S на S 1 , введем новый исходный нетерминал S и к правилам грамматики G добавим правила. Для этого заменим каждое из правил, правые части которых содержат хотя бы по одному аннулирующему нетерминалу, множеством новых правил. Если правая часть правила содержит k вхождений аннулирующих нетерминалов, то множество, заменяющее это правило, будет состоять из 2 k правил, соответствующих всем возможным способам удаления некоторых или всех из этих вхождений. Добавим к этому правилу следующие правила:. Заметим, что в случае неоднозначности, на этом шаге может получиться меньше чем 2 k правил. После такой замены правил, для всех правых частей исходной грамматики, содержащих аннулирующие нетерминалы, исключим из грамматики все e - правила, включая те, которые могли появиться при замене. В результате мы получим грамматику, эквивалентную исходной, что доказывается с использованием теорем 4. Отметим, что мы рассматривали случай, когда аннулирующие нетерминалы имеют и другие альтернативы, кроме перехода в пустую цепочку. В результате применения рассмотренного алгоритма можно получить КС-грамматику, по которой вывод любой непустой цепочки характеризуется тем, что сентенциальная форма, получаемая на каждом шаге вывода, будет не короче предыдущей. Не случайно полученная грамматика носит название неукорачивающей КС-грамматики НКС-грамматики. Вначале покажем, что данная грамматика не порождает пустой цепочки. Проведем замены правил, правые части которых содержат аннулирующие нетерминалы, а затем удалим e - правила. В результате получим грамматику. Для приведения грамматики к удлиняющей форме необходимо кроме аннулирующих правил исключить и цепные правила. Для любой КС-грамматики существует эквивалентная ей грамматика без цепных правил. Любое такое преобразование правил допустимо исходя из теорем 4. Повторяем такие преобразования до тех пор, пока в грамматике не останется цепных правил. В результате устранения аннулирующих и цепных правил получается грамматика в удлиняющей форме , где сентенциальная форма на каждом шаге вывода будет длиннее сентенциальной формы на предыдущем шаге. Напомним, что эта форма грамматики использовалась для доказательства теоремы о разрешимости контекстных языков теорема 1. КС-грамматика G называется приведенной , если она без циклов, без аннулирующих правил и без тупиков. Грамматики с e - правилами и циклами иногда труднее анализировать, чем грамматики без таковых. Кроме того, в любой практической ситуации тупики бесполезные символы без необходимости увеличивают объем анализатора. Поэтому для некоторых алгоритмов синтаксического анализа, рассматриваемых во второй части пособия, мы будем требовать, чтобы грамматики, фигурирующие в них, были приведенными. Это требование позволяет рассматривать все КС-языки. Применить к КС-грамматике, определяющей язык L , эквивалентные преобразования по теоремам 4. В целом ряде приложений требуется, чтобы грамматика рассматриваемого языка не содержала левой рекурсии. Наличие леворекурсивных правил в исходной грамматике не фатально, так как для любой КС-грамматики существует эквивалентная грамматика без левой рекурсии. Рассмотрим случай когда правила грамматики саморекурсивны , то есть левая часть правила и край правой части совпадают. Пусть нетерминал A имеет m леворекурсивных правил. Заменив эти правила на правила. Самой короткой грамматикой для представления идентификатора является леворекурсивная грамматика. В данной грамматике два леворекурсивных правила и одно правило без левой рекурсии. Заменяем их на правила. Заметим, что исключение аннулирующего правила приведет нас к грамматике из примера 4. Этот прием носит название левой факторизации и его необходимо знать для ряда приложений. D Чудо не есть ни волевой, А те, к кому вы взываете наряду с Ним, не владеют даже финиковой плевой. Болевой синдром в левой половине грудной клетки Влияние одноименных и других ионов на растворимость электролитов. Внутриотраслевая конкуренция и ее интенсивность. Водно-солевой обмен Водно-солевой режим Водно-солевой режим. Хрущева и попытки возврата к скрытому сталинизму. Добавим к этому правилу следующие правила: A k Заметим, что в случае неоднозначности, на этом шаге может получиться меньше чем 2 k правил.
Правило 1 2 3 склонение
Социально значимые проблемы общества
Пескарь рыба как готовить
Перечислить деньги с телефона на яндекс деньги
Доверенность мировому судьеот юридического лица образец
Тест гласные звуки