Языки программирования и методы трансляции (+CD-ROM)
Серия: Учебное пособие
Издательство: Питер, 2007 г.
Твердая обложка, 640 стр.
ISBN 978-5-469-00378-6
Тираж: 4000 экз.
Формат: 70x100/16
рейтинг: 5
+ - −
цена:
5.45 белорусских рублей
Нет на складе
От издателя
В книге рассматриваются вопросы сравнительного анализа языков программирования и конструирование компиляторов. В первой части издания подробно обсуждаются языки Ява и Си#. Большое внимание уделяется Оберону - одному из самых совершенных языков программирования. В этой книге впервые публикуется его спецификация на русском языке. Также приводятся результаты оригинальных исследований языков программирования.
Вторая тема книги - конструирование компиляторов. Рассматриваются все элементы транслятора и этапы реализации языка - от спецификации до формирования машинного кода, а также приводится полный исходный текст компилятора на нескольких языках программирования.
При работе над книгой автор сделал акцент на понятное, конструктивное и интересное изложение материала. Книга адресуется студентам вузов, специализирующимся по компьютерным технологиям, программистам-практикам и всем, кто интересуется программированием. Предполагается, что читатель имеет начальные навыки программирования и обладает математической подготовкой в пределах программы средней школы.
Допущено Министерством образования и науки Российской Федерации в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности (направлению) 010200 (510200) "Прикладная математика и информатика".
Содержание
От автора 14
От издательства 15
Благодарности 16
Языки и эволюция технологий программирования 17
Языки программирования высокого уровня 17
Язык и его реализация 17
Компилятор, интерпретатор, конвертор 18
Метаязыки 22
Генеалогия языков программирования 22
Первое поколение языков 26
Фортран 26
Алгол-60 34
Кобол 41
Две попытки объять необъятное 43
ПЛ/1 44
Алгол-68 47
Интерактивное программирование для всех 53
Бейсик 54
Структурное программирование 64
Основы структурного программирования 67
Паскаль 78
Язык Си 87
Модульность, надежность, абстракция 94
Ада 94
Модула-2 99
Абстрактные типы данных 104
Объектно-ориентированное программирование 106
Язык программирования Си++ 114
Язык программирования Оберон 120
Язык программирования Ява 130
Язык программирования Си# 141
Примеры использования объектной технологии 158
Языки-концепции 183
Форт 183
Лисп 186
Пролог 186
Смолток 186
Языки Интернета 187
HTML 188
Ява и аплеты 189
Скриптовые языки 190
Языки CGI-программирования 191
Языки активных серверных страниц 194
Языки Интернета: повторение пройденного 195
Какой язык лучше. Сравнительная оценка языков программирования 197
Арифметика синтаксиса 198
Экспертная оценка языков программирования 204
Важнейшие языки 205
Теоретические основы трансляции 206
Формальные языки и грамматики 206
Основные термины и определения 206
Примеры языков 207
Порождающие грамматики (грамматики Н. Хомского) 209
Еще несколько определений 212
Дерево вывода 213
Задача разбора 214
Для чего надо решать задачу разбора 214
Домино Де Ремера 215
Разновидности алгоритмов разбора 216
Эквивалентность и однозначность грамматик 217
Иерархия грамматик Н. Хомского 219
Автоматные грамматики и языки 221
Граф автоматной грамматики 221
Конечные автоматы 222
Преобразование недетерминированного конечного автомата в детерминированный конечный автомат 223
Таблица переходов детерминированного конечного автомата 226
Программная реализация автоматного распознавателя 226
Дерево разбора в автоматной грамматике 227
Пример автоматного языка 228
Синтаксические диаграммы автоматного языка 230
Регулярные выражения и регулярные множества 232
Эквивалентность регулярных выражений и автоматных грамматик 233
Для чего нужны регулярные выражения 234
Регулярные выражения как языки 235
Расширенная нотация для регулярных выражений 235
Контекстно-свободные грамматики и языки 236
Однозначность КС-грамматики 236
Алгоритмы распознавания КС-языков 237
Распознающий автомат для КС-языков 237
Самовложение в КС-грамматиках 238
Синтаксические диаграммы КС-языков 238
Определение языка с помощью синтаксических диаграмм 240
Синтаксический анализ КС-языков методом рекурсивного спуска 243
Требование детерминированного распознавания 249
LL-грамматики 250
Левая и правая рекурсия 250
Синтаксический анализ арифметических выражений 251
Включение действий в синтаксис 256
Обработка ошибок при трансляции 265
Табличный LL(1)-анализатор 267
Рекурсивный спуск и табличный анализатор 277
Трансляция выражений 278
Польская запись 278
Алгоритм вычисления выражений в обратной польской записи 279
Перевод выражений в обратную польскую запись 281
Интерпретация выражений 283
Семантическое дерево выражения 284
Упражнения для самостоятельной работы 294
Трансляция языков программирования 299
Описание языков программирования 299
Метаязыки 300
БНФ 300
Синтаксические диаграммы 300
Расширенная форма Бэкуса–Наура 301
Описания синтаксиса языков семейства Си 302
Описания синтаксиса языка Ада 302
Определение синтаксиса Кобола и ПЛ/1 303
Язык программирования “О” 303
Краткая характеристика языка “О” 304
Синтаксис “О” 304
Пример программы на “О” 306
Структура компилятора 306
Многопроходные и однопроходные трансляторы 308
Компилятор языка “О” 310
Вспомогательные модули компилятора 311
Лексический анализатор (сканер) 313
Виды и значения лексем 314
Лексический анализатор языка “О” 315
Синтаксический анализатор 329
Контекстный анализ 332
Таблица имен 333
Контекстный анализ модуля 340
Трансляция списка импорта 343
Трансляция описаний 344
Контекстный анализ выражений 346
Контекстный анализ операторов 350
Генерация кода 352
Виртуальная машина 352
Архитектура виртуальной машины 353
Программирование в коде виртуальной машины 358
Реализация виртуальной машины 362
Генератор кода 367
Распределение памяти 369
Генерация кода для выражений 371
Генерация кода для операторов 381
Завершение генерации 389
Назначение адресов переменным 389
Трансляция процедур 392
Расширенный набор команд виртуальной машины 393
Процедуры без параметров и локальных переменных 394
Процедуры с параметрами-значениями без локальных переменных 395
Процедуры с параметрами-значениями и локальными переменными 399
Простейшая оптимизация кода 400
Процедуры-функции с параметрами-значениями и локальными переменными 400
Трансляция оператора RETURN 402
Особенность трансляции параметров‑переменных 403
Пример программы на языке “О с процедурами” 404
Конструкция простого ассемблера 408
Язык ассемблера виртуальной машины 408
Реализация ассемблера 412
Автоматизация построения и мобильность трансляторов 420
Автоматический анализ и преобразование грамматик 420
Автоматическое построение компилятора и его частей 420
Использование языков высокого уровня 425
Самокомпилятор. Раскрутка 427
Примеры раскрутки 431
Унификация промежуточного представления 431
Приложение 1. Язык программирования Оберон-2 436
От переводчика 436
1. Введение 438
2. Синтаксис 439
3. Словарь и представление 439
4. Объявления и области действия 441
5. Объявления констант 442
6. Объявления типов 442
6.1. Основные типы 443
6.2. Тип массив 443
6.3. Тип запись 444
6.4. Тип указатель 444
6.5. Процедурные типы 445
7. Объявления переменных 445
8. Выражения 445
8.1. Операнды 446
8.2. Операции 446
9. Операторы 449
9.1. Присваивания 449
9.2. Вызовы процедур 449
9.3. Последовательность операторов 450
9.4. Операторы IF 450
9.5. Операторы CASE 451
9.6. Операторы WHILE 451
9.7. Операторы REPEAT 451
9.8. Операторы FOR 452
9.9. Операторы LOOP 452
9.10. Операторы возврата и выхода 452
9.11. Операторы WITH 453
10. Объявления процедур 453
10.1. Формальные параметры 454
10.2. Процедуры, связанные с типом 455
10.3. Стандартные процедуры 456
11. Модули 458
Приложение A: Определение терминов 460
Целые типы 460
Вещественные типы 460
Числовые типы 460
Одинаковые типы 460
Равные типы 460
Поглощение типов 460
Расширение типов (базовый тип) 460
Совместимость по присваиванию 461
Совместимость массивов 461
Совместимость выражений 461
Совпадение списков формальных параметров 462
Приложение B: Синтаксис Оберона-2 462
Приложение C: Модуль SYSTEM 464
Приложение D: Среда Оберон 465
D1. Команды 465
D2. Динамическая загрузка модулей 466
D3. Сбор мусора 467
D4. Смотритель 467
D5. Структуры данных времени выполнения 467
Приложение 2. Текст компилятора языка “О” на Паскале 469
Приложение 3. Текст компилятора языка “О” на Обероне 500
Отличия версий для компиляторов JOB и XDS 500
Изменение обозначений 500
Изменения в структуре компилятора 501
Приложение 4. Текст компилятора языка “О” на Си/Си++ 534
Приложение 5. Текст компилятора “О” на языке
программирования Ява 563
Приложение 6. Текст компилятора “О” на языке
программирования Си# 591
Приложение 7. Сравнение компиляторов 618
Компиляторы языка “О” 618
Компиляторы компилируют компиляторы 619
Приложение 8. Ассемблер виртуальной О‑машины 623
Литература 633
Читать дальше…
Свернуть
Лучшие книги этого раздела
Сортировка: по рейтингу, по дате