Содержание Предисловие..........................................................

advertisement
Содержание
Предисловие ....................................................................................... 10
Введение .............................................................................................. 12
От издательства ..................................................................................... 13
Глава 1. Формальные языки и грамматики .......................... 14
Языки и цепочки символов. Способы задания языков ....................... 14
Цепочки символов. Операции над цепочками символов............. 14
Понятие языка. Формальное определение языка.......................... 16
Способы задания языков. Синтаксис и семантика языка .......... 17
Особенности языков программирования ...................................... 19
Грамматики и распознаватели ............................................................. 20
Формальное определение грамматики. Форма Бэкуса—Наура .. 20
Принцип рекурсии в правилах грамматики ................................. 2 2
Другие способы задания грамматик ............................................. 23
Распознаватели. Общая схема распознавателя .......................... 26
Виды распознавателей..................................................................... 29
Задача разбора.................................................................................. 30
Классификация языков и грамматик .................................................. 31
Классификация грамматик. Четыре типа грамматик
по Хомскому .................................................................................... 32
Классификация языков.................................................................... 34
Классификация распознавателей.................................................... 36
Примеры классификации языков и грамматик ............................ 38
Цепочки вывода. Сентенциальная форма ........................................... 41
Вывод. Цепочки вывода .................................................................. 41
Сентенциальная форма грамматики. Язык, заданный
грамматикой..................................................................................... 43
Левосторонний и правосторонний выводы................................... 44
Дерево вывода. Методы построения дерева вывода .................... 44
Проблемы однозначности и эквивалентности грамматик ................ 46
Однозначные и неоднозначные грамматики ................................. 46
Проверка однозначности и эквивалентности грамматик ............ 48
Правила, задающие неоднозначность в грамматиках................... 50
Контрольные вопросы и задачи ........................................................... 50
Вопросы ........................................................................................ 50
Задачи ............................................................................................ 51
Глава 2. Основные принципы построения трансляторов……….. 54
Трансляторы, компиляторы и интерпретаторы - общая
схема работы .................................................................................... 54
Определения транслятора, компилятора, интерпретатора .......... 54
Этапы трансляции. Общая схема работы транслятора ................. 58
Понятие прохода. Многопроходные и однопроходные
компиляторы .................................................................................... 61
Современные компиляторы и интерпретаторы.................................. 63
Компиляторы с языков высокого уровня...................................... 63
Интерпретаторы. Особенности построения интерпретаторов .... 67
Трансляторы с языка ассемблера («ассемблеры»)......................... 70
Макроязыки и макрогенерация ...................................................... 73
Таблицы идентификаторов. Организация таблиц идентификаторов 77
Назначение и особенности построения таблиц идентификаторов 77
Простейшие методы построения таблиц идентификаторов ....... 79
Построение таблиц идентификаторов по методу бинарного
дерева ................................................................................................ 80
Хэш-функции и хэш-адресация...................................................... 83
Комбинированные способы построения таблиц
идентификаторов ............................................................................. 91
Контрольные вопросы и задачи ........................................................... 93
Вопросы
....................................................................................... 93
Задачи ............................................................................................ 94
Глава 3. Лексические анализаторы ............................................. 96
Лексические анализаторы (сканеры). Принципы построения
сканеров................................................................................................. 96
Назначение лексического анализатора..........................................
Принципы построения лексических анализаторов ........................
Регулярные языки и грамматики ........................................................
Регулярные и автоматные грамматики .....................................
Конечные автоматы.........................................................................
Детерминированные и недетерминированные конечные
автоматы ..........................................................................................
Минимизация конечных автоматов ..........................................
Регулярные множества и регулярные выражения........................
Свойства регулярных языков .....................................................
Построение лексических анализаторов ...............................................
Три способа задания регулярных языков .....................................
Построение регулярного выражения для языка, заданного
леволинейной грамматикой .........................................................
Построение конечного автомата на основе леволинейной
грамматики … … … … … … … … … … … … … … … . .
Примеры построения лексических анализаторов........................
Автоматизация построения лексических анализаторов
(программа LEX) . . ……………………………………………….
Контрольные вопросы и задачи ..........................................................
Вопросы ...........................................................................................
Задачи ............................................................................................
Глава 4. Синтаксические анализаторы ...............................
Основные принципы работы синтаксических анализаторов ...........
Назначение синтаксических анализаторов ...............................
Автоматы с магазинной памятью..................................................
Построение синтаксических анализаторов ..............................
Преобразование КС-грамматик. Приведенные грамматики ...........
Преобразование грамматик. Цель преобразования .....................
Приведенные грамматики ..............................................................
Удаление бесплодных символов....................................................
Удаление недостижимых символов ..............................................
Устранение ^.-правил ..................................................................
Устранение цепных правил ........................................................
Устранение левой рекурсии...........................................................
Синтаксические распознаватели с возвратом ...................................
Принципы работы распознавателей с возвратом.........................
Нисходящий распознаватель с возвратом ....................................
Распознаватель на основе алгоритма «сдвиг-свертка» ................
Нисходящие распознаватели КС-языков без возвратов ...................
Левосторонний разбор по методу рекурсивного спуска ............
Расширенные варианты метода рекурсивного спуска ................
Щк)-грамматики .......................................................................
Синтаксический разбор для Щ1)-грамматик .............................
Восходящие распознаватели КС-языков без возвратов ...................
1_Р!(к)-грамматики...........................................................................
Синтаксический разбор для 1_Р1(0)-грамматик.............................
Синтаксический разбор для 1_П(1)-грамматик ............................
SLR(1) и LALR(1)-rpaMMaTHKH ....................................................
Автоматизация построения синтаксических анализаторов
(программа YACC)........................................................................
Синтаксические распознаватели на основе грамматик
предшествования . . . .
Общие принципы грамматик предшествования ..........................
Грамматики простого предшествования......................................
Грамматики операторного предшествования ..............................
Контрольные вопросы и задачи..........................................................
Вопросы ...........................................................................................
Задачи...............................................................................................
Глава 5. Генерация и оптимизация кода .........................................
Семантический анализ и подготовка к генерации кода ...................
Назначение семантического анализа ............................................
Этапы семантического анализа .....................................................
Идентификация лексических единиц языков
программирования .........................................................................
Распределение памяти .........................................................................
Принципы распределения памяти .................................................
Виды переменных и областей памяти...........................................
96
98
103
103
107
109
112
114
120
121
121
122
124
129
139
141
141
142
144
144
144
145
148
153
153
154
154
155
156
158
160
162
162
164
170
176
176
180
184
187
197
198
203
209
214
221
223
223
224
234
245
245
247
249
249
249
250
256
259
259
260
Виды областей памяти. Статическое и динамическое
связывание ......................................................................................
Дисплей памяти процедуры (функции). Стековая организация
дисплея памяти ........................................................... ...............
Исключительные ситуации и их обработка .............................
Память для типов данных (RTTI-информация) ............................
Генерация кода. Методы генерации кода ..........................................
Общие принципы генерации кода ................................................
Синтаксически управляемый перевод..........................................
Способы внутреннего представления программ .....................
Обратная польская запись операций.............................................
Схемы СУ-перевода .......................................................................
Оптимизация кода. Основные методы оптимизации ........................
Общие принципы оптимизации кода ........................................
Оптимизация линейных участков программы .............................
Другие методы оптимизации программ.......................................
Машинно-зависимые методы оптимизации ................................
Контрольные вопросы и задачи ..........................................................
Вопросы ...........................................................................................
Задачи ...............................................................................................
263
267
272
279
281
281
282
285
291
294
301
301
305
312
319
321
321
324
Глава 6. Современные системы программирования ............ 327
Понятие и структура системы программирования ...........................327
Понятие о системе программирования ........................................327
Возникновение систем программирования .................................328
Появление интегрированных сред разработки ........................330
Структура современной системы программирования ................332
Принципы функционирования систем программирования..............335
Функции текстовых редакторов в системах
программирования…………………………………………………335
Компилятор как составная часть системы программирования 338
Компоновщик. Назначение и функции компоновщика..............339
Загрузчики и отладчики. Функции загрузчика ...........................341
Библиотеки подпрограмм...................................................................345
Библиотеки подпрограмм как составная часть систем
программирования ………………………………………………….345
Статические библиотеки подпрограмм........................................347
Динамические библиотеки подпрограмм ....................................348
Ресурсы пользовательского интерфейса. Редакторы ресурсов ..350
Мобильность и переносимость программного обеспечения
351
Разработка приложений в архитектуре «клиент-сервер» ..................357
История возникновения приложений с архитектурой
«клиент-сервер»…………………………………………………….357
Структура приложения, построенного в архитектуре
«клиент-сервер»..............................................................................358
Современные серверы данных. Язык запросов данных..............360
Принципы создания приложений в архитектуре
«клиент-сервер» ..............................................................................363
Разработка программ в многоуровневой архитектуре .....................365
Принципы разработки приложений в многоуровневой
архитектуре .....................................................................................365
Технологии взаимодействия с сервером приложений................367
Организация серверов приложений ..............................................371
Возможности многоуровневой архитектуры ...............................372
Разработка программного обеспечения для сети Интернет .......373
Контрольные вопросы и задачи ..........................................................382
Вопросы ...........................................................................................382
Задачи.............................................. ................................................384
Указатель литературы .................................................................. 386
Алфавитный указатель.................................................................. 390
Download