Найти

Теория языков программирования

                              МГМИ
                          Кафедра ВТиПМ

                                        УТВЕРЖДАЮ
                                        Декан гуманитарного
                                        факультета Атлас А.Б.
                                        ____________________
                                        "____"_________1995г.

                   Рабочая программа по курсу
         "Реализация языков программирования. Основы построения
                          компиляторов"

     Для специальности:  Програмное  обеспечение  вычислительной
               техники и автоматизированных систем

     Программа составлена на основании  программ  математических
дисциплин для инженерно-технических  специальностей  вузов,  ут-
вержденными Главным учебно-методическим управлением высшего  об-
разования 5 июля 1988 года.

          Составитель: Кирпичев Александр Александрович

                          Магнитогорск
                              1993


     Специальность: Програмное обеспечение  вычислительной  техники  и
автоматизированных систем

     Курс - четвертый
     Семестр - второй
     Группы - ЭВ-92
     Лекции - 15
     Лаб. занятия - 15
     Курсовой поект
     Консультации - первый
     Зачет - второй


     Рабочая программа рассмотрена и обсуждена на заседании  ка-
федры ВТиПМ "___"___________1995г.

                    Зав. кафедрой               /Девятов Д.Х./

     Рабочая программа рассмотрена и обсуждена на заседании КППК
специальности "___"___________1995г.


                        Содержание дисциплины

                                Лекции

     1. Введение.
     Компилятор и интерпритатор. Общие определения.
     2. Грамматики и языки.
     Алфавит языка.  Синтаксические единицы языка.  Синтаксические де-
ревья и неоднозначность.
     3. Программы лексического анализа.
     Регулярные выражения  и  конечные автоматы.  Построение конечного
автомата.  Диаграмма состояний - как способ графического представления
процесса разбора символов.
     4. Методы нисходящего разбора.
     Нисходящий разбор с возвратами.  Рекурсивный спуск. Решение проб-
лем нисходящего разбора.
     5. Восходящие распознаватели. Грамматики простого предшествования.
     Использование отношений  предшествования.  Построение   отношений
Этого типа. Функции предшествования.
     6. Примеры других распознавателей.
     Ограниченный контекст. Матрицы переходов.
     7. Организация памяти в готовой программе.
     Области данных.  Память для данных элементарных типов. Память для
массивов,  строк и структур. Соответствие фактических и формальных па-
раметров. Динамическое выделение памяти.
     8. Организация таблиц символов.
     Неупорядоченные и упорядоченные таблицы. Хеш-табдицы. Древовидная
структура таблицы.
     9. Информация в таблице символов.
     Описатель. Описатель для компонент структур.
     10. Внутренние формы исходной программы.
     Операторы и операнды.  Польская запись. Тетрады. Триады и косвен-
ные триады. Деревья. Линейные участки.
     11. Введение в семантические программы.
     Перевод инфиксной записи в польскую. Преобразование инфиксной за-
писи в тетрады. Реализация стеков.
     12. Семантические программы для конструкций языка, подобного Pas-
cal.

     13. Отведение памяти переменным в готовой программе.
     Присваивание адресов переменным. Отведение памяти временным пере-
менным.
     14. Нейтрализация ошибок.
     Виды ошибок. Нейтрализация семантических и синтаксических ошибок.
     15. Интерпретаторы.
     Преобразование типов  операндов.  Управление памятью во время ин-
терпретации. Отладка.
     16. Генерация кода на объектном языке.
     Генерация команд для простых арифметических выражений.  Адресация
операндов. Экономия памяти при генерации кода. Объектные модули.
     17. Оптимизация программы.
     Оптимизация в пределах линейных участков. Оптимизация циклов.
     18. Подведение итогов.

                        Лабораторные занятия

     1. Практикум по программированию на YACC. (4 часа)
     2. Простейший калькулятор (разбор единственной строки). (2 часа)
     3. Разбор текста, содержащего условные инструкции. (2 часа)
     4. Разбор текста, содержащего метки. (2 часа)
     5. Разбор текста, содержащего цикл типа FOR (2 часа)
     6. Написание  интерпретатора языка типа BASIC включающий обработ-
чик исключительных ситуаций. (6 часов)

                             Литература

     1. Д.Грис. Конструирование компиляторов для цифровых вычислитель-
ных машин/ Пер. с англ. - М.: Мир, 1975. - 544c.
     2. Хантер Р.  Проектирование и конструирование компиляторов/ Пер.
с англ. - М.: Финансы и статистика, 1984. - 232с.
     3. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проек-
тирования компиляторов/ Пер. с англ. - М.: Мир, 1979. - 656c.
     4. Маккиман У.,  Хорнинг Дж., Уортман Д. Генератор компиляторов /
Пер. с англ. - М.: Статистика, 1980. - 527c.
     5. Берри Р., Микинз Б. Язык Си: введение для программистов./ Пер.
с англ. - М.: Финансы и статистика, 1988. - 191c.

Примечание: программа сохранилась с каких-то давних пор, если кому принесет пользу - хорошо. Разумеется, первая книжка в списке литературы неточно записана. Есть и другие мелкие небрежности, которые не исправлял.

Рейтинг SIMPLETOP.NET
Rambler's Top100 Powered byCeleron©
Бесплатный хостинг от EOMY.NET