
- •«Мурманский государственный технический университет»
- •Методические указания к практическим занятиям студентов
- •Оглавление
- •Общие организационно-методические указания
- •Тематический план дисциплины
- •Перечень практических работ
- •Список рекомендуемой литературы
- •Содержание и методические указания к практическим занятиям по темам
- •Практическое занятие 1. Построение кс-грамматик.
- •Практическое занятие 2. Построение дерева синтаксического разбора, левого и правого выводов цепочек.
- •Практическое занятие 3. Эквивалентные преобразования кс-грамматик.
- •Практическое занятие 4. Построение конечных автоматов.
- •Практическое занятие 5. Построение минимального и приведенного конечного автомата.
- •Практическое занятие 6. Преобразование недетерминированного ка в детерминированный.
- •Практическое занятие 7. Построение автоматов с магазинной памятью.
- •Практическое занятие 8. Построение мп-трансляторов.
- •Практическое занятие 9. Построение s-грамматик и мп-автоматов для обработки языков, порождаемых этими грамматиками.
- •Практическое занятие 10. Построение q-грамматик и мп-автоматов для обработки языков, порождаемых этими грамматиками.
- •Практическое занятие 11. Построение ll(1)-грамматик и мп-автоматов для обработки языков, порождаемых этими грамматиками.
- •Практическое занятие 12. Определение атрибутов и работа с атрибутными транслирующими грамматиками.
- •Приложение 1.
Список рекомендуемой литературы
Основная:
Компаниец Р.И., Маньков Е.В., Филатов Н.Е. Системное программирование. Основы построение трансляторов./ Учебное пособие для высших и средних учебных заведений.- СПб.: КОРОНА принт, 2000.
Системное программное обеспечение / А.В.Гордеев, А.Ю.Молчанов. – СПб.: Питер, 2001.
Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. – Мир, М., 1979.
Рейуорд-Смит В.Дж. Теория формальных языков. Вводный курс: Пер. с англ. – М.: Радио и связь, 1988.
Дополнительная:
Братчиков И.Л. Синтаксис языков программирования. – М.: Наука, 1975.
Хантер Р. Проектирование и конструирование компиляторов/ пер. с англ. – М.: Финансы и статистика, 1984.
Содержание и методические указания к практическим занятиям по темам
Тема. Контекстно-свободные грамматики (КС-грамматики).
Дерево вывода в КС-грамматике. Эквивалентные преобразования КС-грамматик. Нормальные формы Хомского и Грейбах.
Практическое занятие 1. Построение кс-грамматик.
Цель: освоение навыка классификации порождающих грамматик и построения контекстно-свободных грамматик.
Задание 1.
Найти КС-грамматику для каждого из следующих языков:
{1n 0m | n>m>0};
{1n 0n 1m 0m | n≥0, m≥0};
{1n 0m 1m 0n | n≥0, m≥0};
Все цепочки в алфавите {0,1}, содержащие равное количество нулей и единиц.
Рекомендуемая литература: [1], [2], конспект лекций.
Этапы выполнения.
Для каждого языка:
Записать несколько различных примеров цепочек, принадлежащих данному языку, включая цепочку минимальной длины.
Используя приведенные примеры, определить множество терминальных и нетерминальных символов.
Определить начальный нетерминал и зафиксировать первые правила грамматики, описывающие основные структуры цепочек, принадлежащих данному языку.
Дополнить полученные правила продукциями, соответствующими остальным нетерминалам (если таковые имеются), включая правила, завершающие вывод цепочек, т.е. содержащие в правой части терминальные символы или пустую цепочку.
Для каждого языка привести по два примера цепочек, принадлежащих и непринадлежащих данному языку.
Для подтверждения правильности полученного результата построить вывод каждой цепочки с использованием найденной грамматики.
Задание 2.
Описать языки, порождаемые следующими грамматиками с начальным нетерминалом <S>:
<S> → a <A> <A> → b <A> <A> → a
<S> → 1 <A> 0 <A> → 1 <A> 0 <A> → |
<S> → <B> 0 <A> → 1 <A> <A> → <C> <B> → <B> 0 <B> → <C> <C> → 1 <C> 0 <C> → |
Рекомендуемая литература: [1], [2], конспект лекций.
Этапы выполнения.
Для каждой грамматики:
Записать несколько различных примеров цепочек, порождаемых данной грамматикой, включая цепочку минимальной длины.
Использую приведенные примеры определить множество терминальных символов.
Описать язык, порождаемый данной грамматикой, с помощью символов множества или дав формулировку словами.
Подтвердить правильность полученного результата построением выводов цепочек, порождаемых данной грамматикой и принадлежащих найденному языку.
Задание 3. (Самостоятельно)
Построить КС-грамматику для условного оператора if в языке Си. Операторы, входящие в состав условного оператора, идентификаторы, входящие в состав логических выражений, обозначить терминальными символами.
Рекомендуемая литература: [1], [2], конспект лекций.