Теория языков программирования и методы трансляции

Учебное пособие

Настоящее пособие посвящено проблеме теоретического описания конечных автоматов, формальных языков и методов трансляции программ. В пособии рассматриваются такие вопросы, как синтаксический и семантический анализ цепочек символов, генерация объектного кода программ (включая оптимизацию кода и исправление ошибок), а также проектирование компиляторов.

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

Библиографическая запись:

Романенко, В. В. Теория языков программирования и методы трансляции: Учебное пособие [Электронный ресурс] / В. В. Романенко, В. Т. Калайда. — Томск: ТУСУР, 2019. — 264 с. — Режим доступа: https://edu.tusur.ru/publications/9043
Год издания: 2019
Количество страниц: 264
Скачиваний: 29

Оглавление (содержание)

ВВЕДЕНИЕ 6

1 ПРЕДВАРИТЕЛЬНЫЕ МАТЕМАТИЧЕСКИЕ СВЕДЕНИЯ 8

1.1 Множества 8

1.2 Операции и отношения 9

1.3 Множества цепочек 18

1.4 Языки 20

1.5 Алгоритмы 22

1.6 Некоторые понятия теории графов 26

2 ВВЕДЕНИЕ В КОМПИЛЯЦИЮ 34

2.1 Задание языков программирования 34

2.2 Синтаксис и семантика 36

2.3 Процесс компиляции 39

2.4 Лексический анализ 40

2.5 Работа с таблицами 43

2.6 Синтаксический анализ 44

2.7 Генератор кода 46

2.8 Оптимизация кода 52

2.9 Исправление ошибок 54

2.10 Резюме 55

3 ТЕОРИЯ ЯЗЫКОВ 57

3.1 Способы определения языков 57

3.2 Грамматики 58

3.3 Грамматики с ограничениями на правила 63

3.4 Распознаватели 64

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

3.6 Недетерминированные конечные автоматы 74

3.7 Графическое представление конечных автоматов 78

3.8 Конечные автоматы и регулярные множества 82

3.9 Минимизация конечных автоматов 83

3.10 Контекстно-свободные языки 87

3.11 Автоматы с магазинной памятью 106

4 КС-ГРАММАТИКИ И СИНТАКСИЧЕСКИЙ АНАЛИЗ СВЕРХУ ВНИЗ 112

4.1 LL(k)-грамматики 114

4.2 LL(1)-грамматики 116

4.3 LL(1)-таблица разбора 135

5 СИНТАКСИЧЕСКИЙ АНАЛИЗ СНИЗУ ВВЕРХ 148

5.1 LR(k)-грамматики 148

5.2 LR(1)-грамматики 156

5.3 LR(1)-таблица разбора 157

5.4 Сравнение LL- и LR-методов разбора 174

6 ВКЛЮЧЕНИЕ ДЕЙСТВИЙ В СИНТАКСИС 176

6.1 Получение четверок 176

6.2 Работа с таблицей символов 180

7 ПРОЕКТИРОВАНИЕ КОМПИЛЯТОРОВ 185

7.1 Число проходов 185

7.2 Таблицы символов 186

7.3 Таблица видов 192

7.4 Распределение памяти 194

8 ГЕНЕРАЦИЯ КОДА 220

8.1 Генерация промежуточного кода 220

8.2 Структура данных для генерации кода 225

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

8.4 Проблемы, связанные с типами 236

8.5 Время компиляции и время прогона 239

9 ИСПРАВЛЕНИЕ И ДИАГНОСТИКА ОШИБОК 242

9.1 Типы ошибок 242

9.2 Лексические ошибки 243

9.3 Ошибки в употреблении скобок 245

9.4 Синтаксические ошибки 247

9.5 Контекстно-зависимые ошибки 252

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

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

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

ЗАКЛЮЧЕНИЕ 259

СПИСОК ЛИТЕРАТУРЫ 260

ГЛОССАРИЙ 261


Похожие пособия