Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ПЗ_ТЯП_2012.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
71.76 Кб
Скачать

Список рекомендуемой литературы

Основная:

  1. Компаниец Р.И., Маньков Е.В., Филатов Н.Е. Системное программирование. Основы построение трансляторов./ Учебное пособие для высших и средних учебных заведений.- СПб.: КОРОНА принт, 2000.

  2. Системное программное обеспечение / А.В.Гордеев, А.Ю.Молчанов. – СПб.: Питер, 2001.

  3. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. – Мир, М., 1979.

  4. Рейуорд-Смит В.Дж. Теория формальных языков. Вводный курс: Пер. с англ. – М.: Радио и связь, 1988.

Дополнительная:

  1. Братчиков И.Л. Синтаксис языков программирования. – М.: Наука, 1975.

  2. Хантер Р. Проектирование и конструирование компиляторов/ пер. с англ. – М.: Финансы и статистика, 1984.

Содержание и методические указания к практическим занятиям по темам

Тема. Контекстно-свободные грамматики (КС-грамматики).

Дерево вывода в КС-грамматике. Эквивалентные преобразования КС-грамматик. Нормальные формы Хомского и Грейбах.

Практическое занятие 1. Построение кс-грамматик.

Цель: освоение навыка классификации порождающих грамматик и построения контекстно-свободных грамматик.

Задание 1.

Найти КС-грамматику для каждого из следующих языков:

  1. {1n 0m | n>m>0};

  2. {1n 0n 1m 0m | n≥0, m≥0};

  3. {1n 0m 1m 0n | n≥0, m≥0};

  4. Все цепочки в алфавите {0,1}, содержащие равное количество нулей и единиц.

Рекомендуемая литература: [1], [2], конспект лекций.

Этапы выполнения.

Для каждого языка:

  1. Записать несколько различных примеров цепочек, принадлежащих данному языку, включая цепочку минимальной длины.

  2. Используя приведенные примеры, определить множество терминальных и нетерминальных символов.

  3. Определить начальный нетерминал и зафиксировать первые правила грамматики, описывающие основные структуры цепочек, принадлежащих данному языку.

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

  5. Для каждого языка привести по два примера цепочек, принадлежащих и непринадлежащих данному языку.

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

Задание 2.

Описать языки, порождаемые следующими грамматиками с начальным нетерминалом <S>:

  1. <S> → 1 0 <S> 0

<S> → a <A>

<A> → b <A>

<A> → a

  1. <S> → <S><S>

<S> → 1 <A> 0

<A> → 1 <A> 0

<A> → 

  1. <S> → 1 <A>

<S> → <B> 0

<A> → 1 <A>

<A> → <C>

<B> → <B> 0

<B> → <C>

<C> → 1 <C> 0

<C> → 

Рекомендуемая литература: [1], [2], конспект лекций.

Этапы выполнения.

Для каждой грамматики:

  1. Записать несколько различных примеров цепочек, порождаемых данной грамматикой, включая цепочку минимальной длины.

  2. Использую приведенные примеры определить множество терминальных символов.

  3. Описать язык, порождаемый данной грамматикой, с помощью символов множества или дав формулировку словами.

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

Задание 3. (Самостоятельно)

Построить КС-грамматику для условного оператора if в языке Си. Операторы, входящие в состав условного оператора, идентификаторы, входящие в состав логических выражений, обозначить терминальными символами.

Рекомендуемая литература: [1], [2], конспект лекций.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]