Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯП, ТВП / ТЯПМТ / Пособие.doc
Скачиваний:
161
Добавлен:
11.05.2015
Размер:
2.37 Mб
Скачать

155

МИНИСТЕРСТВО ОБРАЗОВАНИЯ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

УТВЕРЖДАЮ

Зав. кафедрой АСУ

Профессор д-р техн. наук

_______________А.М. Кориков

«____»_________2000 г.

Теория вычислительных процессов и структур

Методическое Пособие для студентов специальности 220400 «Программное обеспечение вычислительной техники

и автоматизированных систем»

Разработчик

_____________В.Т.Калайда

2000

Методическое Пособие рассмотрено и рекомендовано к изданию методическим семинаром кафедры автоматизированных систем управления ТУСУР « » 2000 г.

Зав. кафедрой АСУ

проф. д-р техн. наук __________А.М. Кориков

Содержание

Введение………………………………………………………………….

  1. Предварительные математические сведения………………….…..

    1. Множества……………………………………………………..

    2. Операции над множествами…………………………………..

    3. Множества цепочек……………………………………………

    4. Языки……………………………………………………….…..

    5. Алгоритмы……………………………………………………..

    6. Некоторые понятия теории графов…………………………..

Контрольные вопросы……………………………………………….…..

  1. Введение в компиляцию……………………………………………

    1. Задание языков программирования………………………….

    2. Синтаксис и семантика……………………………………….

    3. Процесс компиляции………………………………………….

    4. Лексический анализ……………………………………….…..

    5. Работа с таблицами……………………………………………

    6. Синтаксический анализ……………………………………….

    7. Генератор кода…………………………………………….…..

    8. Оптимизация кода……………………………………………..

    9. Исправление ошибок………………………………………….

    10. Резюме………………………………………………………….

Контрольные вопросы……………………………………………….…..

  1. Теория языков……………………………………………………….

    1. Способы определения языков…………………………….….

    2. Грамматики…………………………………………………….

    3. Грамматики с ограничениями на правила……………….…..

    4. Распознаватели…………………………………………….…..

    5. Регулярные множества, их распознавание и порождение….

    6. Регулярные множества и конечные автоматы……………….

    7. Графическое представление конечных автоматов…………..

    8. Конечные автоматы и регулярные множества………………

    9. Минимизация конечных автоматов………………………….

    10. Контекстно-свободные языки…………………………….…..

      1. Деревья выводов………………………………………

      2. Преобразование КС–грамматик………………….…..

      3. Грамматика без циклов……………………………….

      4. Нормальная форма Хомского………………………..

      5. Нормальная формула Грейбах……………………….

    11. Автоматы с магазинной памятью…………………………….

      1. Основные определения……………………………….

      2. Эквивалентность МП-автоматов и КС-грамматик…

Контрольные вопросы……………………………………………….…..

  1. КС-грамматики и синтаксический анализ сверху вниз……….…..

    1. Эквивалентность МП-автоматов и КС-грамматик………….

    2. LL(1)-грамматики………………………………………….…..

    3. LL(1)-таблица разбора…………………………………….…..

Контрольные вопросы……………………………………………….…..

  1. Синтаксический анализ снизу вверх……………………………….

    1. Разбор снизу вверх…………………………………………….

    2. LR(1)– таблица разбора………………………………………

    3. Построение LR – таблицы разбора……………………….…..

    4. Сравнение LL – иLR – методов разбора…………………….

Контрольные вопросы…………………………………………………...

  1. Включение действий в синтаксис………………………………….

    1. Получение четверок…………………………………………...

    2. Работа с таблицей символов………………………………….

Контрольные вопросы…………………………………………………...

  1. Проектирование компиляторов…………………………………….

    1. Число проходов………………………………………………..

    2. Таблицы символов…………………………………………….

    3. Таблица видов…………………………………………………

Контрольные вопросы…………………………………………………...

  1. Распределение памяти………………………………………………

    1. Стек времени прогона…………………………………………

    2. Методы вызова параметров…………………………………..

    3. Обстановка выполнения процедур…………………………...

    4. «Куча»………………………………………………………….

    5. Счетчик ссылок………………………………………………..

    6. Сборка мусора…………………………………………………

Контрольные вопросы…………………………………………………...

  1. Генерация кода………………………………………………………

    1. Генерация промежуточного кода…………………………….

    2. Структура данных для генерации кода………………………

    3. Генерация кода для типичных конструкций………………...

      1. Присвоение……………………………………………

      2. Условные зависимости……………………………….

      3. Описание идентификаторов………………………….

      4. Циклы………………………………………………….

      5. Вход и выход из блока………………………………..

      6. Прикладная реализация………………………………

    4. Проблемы, связанные с типами………………………………

    5. Время компиляции и время прогона…………………………

Контрольные вопросы…………………………………………………...

  1. Исправление и диагностика ошибок……………………………….

    1. Типы ошибок…………………………………………………..

    2. Лексические ошибки………………………………………….

    3. Ошибки в употреблении скобок……………………………...

    4. Синтаксические ошибки………………………………………

    5. Методы исправления ошибок………………………………..

    6. Предупреждения………………………………………………

    7. Сообщения о синтаксических ошибках……………………..

    8. Контекстно-зависимые ошибки………………………………

    9. Ошибки, связанные с употреблением типов………………...

10.10. Ошибки, допускаемые во время прогона…………………..

10.11. Ошибки, связанные с нарушением ограничений…………..

Контрольные вопросы…………………………………………………...

Список литературы………………………………………………………

6

7

7

8

14

15

17

20

24

24

24

26

28

29

30

31

32

37

39

40

40

40

40

41

44

45

48

52

55

58

58

62

62

66

71

71

73

75

76

78

79

80

80

81

87

91

92

92

94

97

100

101

101

101

104

106

107

107

108

112

113

114

114

120

122

123

124

125

130

130

130

134

138

138

139

139

140

141

142

142

145

146

146

146

147

149

150

151

152

152

153

154

155

156

157

157

Введение

Настоящее пособие посвящено проблеме теоретического описания вычислительных процессов и структур. Существует достаточно большое количество вариантов организации вычислительного процесса (рис. 1.).

Рис 1. Схемы вариантов организации вычислительного процесса

Однако всем этим схемам присуща общая технологическая цепочка – «лексический анализ – синтаксический анализ – генерация кода – оптимизация кода». Многие элементы этой схемы в процессе развития теории программирования из интуитивных, эмпирических алгоритмов превращались в строго математически обоснованные методы, базирующиеся на теории языков, теории перевода, методах синтаксического анализа и др.

В рассматриваемом пособии используются следующие принципы:

  • основное внимание уделяется теоретическим идеям, а не техническим подробностям реализации;

  • широко используется принцип декомпозиции исходной задачи на составляющие, что позволяет каждую часть задачи подвергнуть оптимизации;

  • изложение материала базируется на уверенности в хорошей математической подготовке слушателей.