Книга: Соколов А. П. «Системы программирования»

Системы программирования

Пособие подготовлено на основе многолетнего опыта преподавания учебных дисциплин по системам программирования. Рассматриваются формальные грамматики и языки, их свойства и взаимосвязь с распознавателями. Особое внимание уделяется регулярным грамматикам и конечным автоматам, контекстно-свободным грамматикам и автоматам с магазинной памятью как теоретической основе построения трансляторов для языков программирования. Излагаются методы и алгоритмы анализа и синтеза программ в системах программирования. Приводится большое количество примеров и задач с решениями.
Для студентов вузов и преподавателей дисциплин, изучающих построение и функционирование систем программирования.

Содержание:

Предисловие...... 9 Введение...... 11 1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМАХ ПРОГРАММИРОВАНИЯ...... 17 1. 1. Типовая система программирования...... 17 1. 1. 1. Схема функционирования...... 17 1. 1. 2. Структура вырабатываемой программы...... 21 1. 1. 3. Варианты основных компонентов СП...... 24 1. 2. Классификация языков программирования...... 26 Контрольные вопросы...... 28 2. ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ ФОРМАЛЬНЫХ ЯЗЫКОВ...... 30 2. 1. Исходные сведения из математики...... 30 2. 1. 1. Множества и их свойства...... 30 2. 1. 2. Отношения и отображения...... 32 2. 1. 3. Графы и деревья...... 34 2. 2. Формальные грамматики и языки...... 35 2. 2. 1. Определение языков посредством множеств...... 35 2. 2. 2. Понятие о формальной грамматике...... 37 2. 2. 3. Определение формальной грамматики...... 39 2. 3. Генерация, распознавание и преобразование языков...... 42 2. 3. 1. Классификация грамматик...... 42 2. 3. 2. Механизмы распознавания и преобразования...... 44 Контрольные вопросы...... 47 3. РЕГУЛЯРНЫЕ ГРАММАТИКИ И ЯЗЫКИ...... 49 3. 1. Описание регулярных языков...... 49 3. 1. 1. Регулярные выражения...... 49 3. 1. 2. Свойства регулярных выражений...... 52 3. 2. Конечный автомат...... 54 3. 2. 1. Определение конечного автомата...... 54 3. 2. 2. Способы представления функции переходов...... 55 3. 2. 3. Примеры конечных автоматов...... 57 3. 3. Преобразование конечных автоматов...... 60 3. 3. 1. Задачи преобразования...... 60 3. 3. 2. Устранение недостижимых состояний...... 62 3. 3. 3. Объединение эквивалентных состояний...... 63 3. 3. 4. Построение детерминированного К А...... 65 3. 4. Взаимосвязь способов определения регулярных языков...... 67 3. 4. 1. Характеристика преобразований...... 67 3. 4. 2. Построение КА по регулярному выражению...... 68 3. 4. 3. Построение регулярной грамматики по КА...... 73 3. 4. 4. Построение КА по регулярной грамматике...... 74 Контрольные вопросы...... 76 4. КОНТЕКСТНО-СВОБОДНЫЕ ГРАММАТИКИ И ЯЗЫКИ...... 77 4. 1. Определение КС-языков...... 77 4. 1. 1. Задача и дерево разбора...... 77 4. 1. 2. Проверка существования языка...... 81 4. 1. 3. Устранение недостижимых символов...... 83 4. 2. Эквивалентные преобразования КС-грамматик...... 84 4. 2. 1. Устранение &# 949;-правил...... 84 4. 2. 2. Устранение цепных правил...... 85 4. 2. 3. Левая факторизация правил...... 86 4. 2. 4. Устранение прямой левой рекурсии...... 87 4. 3. Нормальная форма КС-грамматики...... 89 4. 3. 1. Нормальная форма Хомского...... 89 4. 3. 2. Нормальная форма Грейбах...... 91 4. 3. 3. Устранение левой рекурсии...... 92 4. 4. Автомат с магазинной памятью...... 95 4. 4. 1. Определение МП-автомата...... 95 4. 4. 2. Разновидности МП-автоматов...... 97 4. 4. 3. Взаимосвязь МП-автоматов и КС-грамматик...... 98 4. 5. Нисходящие распознаватели языков...... 101 4. 5. 1. Стратегия нисходящего анализа...... 101 4. 5. 2. LL(k)-грамматики...... 103 4. 6. Восходящие распознаватели языков...... 107 4. 6. 1. Стратегия восходящего анализа...... 107 4. 6. 2. LR(k)-грамматики...... 109 4. 6. 3. Иерархия КС-грамматик...... 112 4. 7. Простое предшествование...... 114 4. 7. 1. Грамматика простого предшествования...... 114 4. 7. 2. Вычисление матрицы предшествования...... 115 4. 7. 3. Распознаватель предшествования...... 118 Контрольные вопросы...... 121 5. АЛГОРИТМЫ ТРАНСЛЯЦИИ...... 123 5. 1. Задача трансляции...... 123 5. 1. 1. Постановка задачи трансляции...... 123 5. 1. 2. Транслирующие преобразования...... 124 5. 2. Лексический анализ...... 127 5. 2. 1. Задачи лексического анализа...... 127 5. 2. 2. Применение конечных автоматов...... 130 5. 2. 3. Алгоритмы лексического анализа...... 133 5. 2. 4. Преобразование константы в машинную форму...... 135 5. 3. Синтаксический анализ...... 137 5. 3. 1. Задачи синтаксического анализа...... 137 5. 3. 2. Алгоритм нисходящего синтаксического анализа...... 138 5. 3. 3. Алгоритм восходящего синтаксического анализа...... 142 5. 4. Семантический анализ...... 148 5. 4. 1. Задачи семантического анализа...... 148 5. 4. 2. Формы промежуточной программы...... 150 5. 4. 3. Алгоритмы перевода на промежуточный язык...... 152 5. 4. 4. Особенности перевода сложных конструкций...... 156 5. 5. Оптимизация программы...... 160 5. 5. 1. Методы оптимизации...... 160 5. 5. 2. Свертка выражений...... 161 5. 5. 3. Чистка линейного участка...... 163 5. 5. 4. Чистка циклов...... 165 5. 6. Распределение памяти...... 168 5. 6. 1. Управление данными программы...... 168 5. 6. 2. Задачи распределения памяти...... 174 5. 7. Генерация кода...... 179 5. 7. 1. Управление подпрограммами...... 179 5. 7. 2. Алгоритмы генерации машинного кода...... 185 5. 8. Препроцессорная обработка...... 189 5. 8. 1. Назначение препроцессора...... 189 5. 8. 2. Характеристика алгоритмов...... 191 Контрольные вопросы...... 195 6. ФОРМАЛЬНЫЕ МЕТОДЫ ОПИСАНИЯ ПЕРЕВОДА...... 197 6. 1. Синтаксически управляемый перевод...... 197 6. 1. 1. Схемы компиляции...... 197 6. 1. 2. СУ-схемы...... 199 6. 1. 3. МП-преобразователи...... 200 6. 1. 4. Практическое применение СУ-схем...... 202 6. 2. Построение промежуточной программы...... 204 6. 2. 1. Синтаксическое дерево...... 204 6. 2. 2. Построение триад по синтаксическому дереву...... 206 6. 2. 3. Формирование ассемблерных команд...... 208 6. 3. Транслирующие грамматики...... 210 6. 3. 1. Понятие Т-грамматики...... 210 6. 3. 2. Пример Т-грамматики с подпрограммами...... 212 6. 3. 3. МП-преобразователь для Т-грамматики...... 214 6. 4. Атрибутные транслирующие грамматики...... 217 6. 4. 1. Синтезируемые и наследуемые атрибуты...... 217 6. 4. 2. Определение и свойства АТ-грамматики...... 221 6. 4. 3. Формирование АТ-грамматики...... 224 Контрольные вопросы...... 228 7. АССЕМБЛЕРЫ И КОМПОНОВЩИКИ...... 229 7. 1. Макрогенератор...... 229 7. 1. 1. Схемы макроассемблера и макрогенератора...... 229 7. 1. 2. Таблицы макрогенератора...... 232 7. 1. 3. Обработка макроопределения...... 233 7. 1. 4. Обработка макрокоманды...... 234 7. 1. 5. Обработка команд генерации и вложенных макрокоманд...... 235 7. 2. Ассемблер...... 237 7. 2. 1. Задачи и схема ассемблера...... 237 7. 2. 2. Таблицы ассемблера...... 239 7. 2. 3. Первый просмотр исходной программы...... 240 7. 2. 4. Второй просмотр исходной программы...... 242 7. 2. 5. Формирование команд на языке машины...... 243 7. 3. Редактор связей и загрузчик...... 248 7. 3. 1. Структура объектного модуля...... 248 7. 3. 2. Структура загрузочного модуля...... 250 7. 3. 3. Схема и таблицы редактора связей...... 252 7. 3. 4. Распределение памяти для сегментов...... 253 7. 3. 5. Коррекция адресов программы...... 255 7. 3. 6. Особенности обработки одноименных сегментов...... 257 7. 3. 7. Загрузка программы...... 258 7. 3. 8. Особенности современных компоновщиков...... 261 Контрольные вопросы...... 264 8. ВЕРИФИКАЦИЯ ПРОГРАММ...... 266 8. 1. Логическая спецификация программ...... 266 8. 1. 1. Понятие верификации...... 266 8. 1. 2. Некоторые сведения из математической логики...... 268 8. 1. 3. Принципы логической спецификации свойств программ...... 272 8. 2. Методы анализа свойств корректности программ...... 276 8. 2. 1. Доказательство частичной корректности...... 276 8. 2. 2. Методика верификации программы...... 279 8. 2. 3. Анализ завершения программы...... 282 8. 2. 4. Анализ незавершения программы...... 287 8. 3. Автоматизация верификации программ...... 288 8. 3. 1. Формализация семантики программ...... 288 8. 3. 2. Выбор инварианта цикла...... 292 8. 3. 3. Типовая схема верификатора...... 293 Контрольные вопросы...... 295 Заключение...... 296 Приложения 1. Тематика задач для программирования...... 301 2. Библиотеки системы программирования...... 303 Литература...... 309 Список основных сокращений...... 311 Предметный указатель...... 313

Издательство: "Финансы и статистика" (2004)

ISBN: 5279027707

Другие книги схожей тематики:

АвторКнигаОписаниеГодЦенаТип книги
Ф. П. Фишер, Д. Ф. СуиндлСистемы программированияПредлагаемая читателю книга явилась в свое время первым полным и достаточно подробным описанием всего… — Статистика, (формат: 60x90/16, 606 стр.) Подробнее...1971
400бумажная книга
А. П. СоколовСистемы программирования. Теория, методы, алгоритмыПособие подготовлено на основе многолетнего опыта преподавания учебных дисциплин по системам… — Финансы и статистика, (формат: 60x88/16, 320 стр.) Подробнее...2004
126бумажная книга
Лебедев В. Н.Введение в системы программированияКнига представляет собой монографию по системному программированию. После краткой характеристики основных… — Статистика, (формат: 60x90/16, 312 стр.) Подробнее...1975
430бумажная книга
Открытые системыОткрытые системы. СУБД №03_2010В номере: Модернизация и стратегические ИТ После преодоления уровня производительности в несколько… — Открытые системы, Открытые системы. СУБД 2010 электронная книга Подробнее...2010
221.76электронная книга
Открытые системыОткрытые системы. СУБД №10_2014В номере: Пришествие третьей платформы: «большая семерка» ОС, версия 2015 На фоне текущей макроэкономической… — Открытые системы, Открытые системы. СУБД 2014 электронная книга Подробнее...2014
330электронная книга
Открытые системыОткрытые системы. СУБД №05_2011В номере: Файловые системы для больших данных Сегодня чаще всего решение проблемы больших данных связывают… — Открытые системы, Открытые системы. СУБД 2011 электронная книга Подробнее...2011
253.44электронная книга
Открытые системыОткрытые системы. СУБД №06_2011В номере: GPU для HPC – время пришло Современные графические процессоры достигли высоких показателей… — Открытые системы, Открытые системы. СУБД 2011 электронная книга Подробнее...2011
253.44электронная книга
Открытые системыОткрытые системы. СУБД №04_2012В номере: Время конвергентных инфраструктур По оценке аналитиков, в 2017 году потенциальный размер рынка… — Открытые системы, Открытые системы. СУБД 2012 электронная книга Подробнее...2012
316.8электронная книга
Открытые системыОткрытые системы. СУБД №09_2011В номере: Язык программирования Kotlin В последние годы назрела потребность в новом языке, компилируемом в… — Открытые системы, Открытые системы. СУБД 2011 электронная книга Подробнее...2011
253.44электронная книга
Открытые системыОткрытые системы. СУБД №08_2013В номере: Гетерогенная архитектура для CPU, GPU и DSP Большинство современных систем от мобильных устройств до… — Открытые системы, Открытые системы. СУБД 2013 электронная книга Подробнее...2013
316.8электронная книга
Другие книги по запросу «Системы программирования» >>

См. также в других словарях:

  • Системы типизации — в достаточной степени развиты в современных языках программирования и отражают общую технику использования объектов. При этом считается, что имеется две системы объектов, причем элементам одной из них ставятся в соответствие элементы другой. В… …   Википедия

  • Форт (язык программирования) — У этого термина существуют и другие значения, см. Форт (значения). Forth Семантика: императивный Тип исполнения: интерпретатор/компилятор Появился в: 1971 Автор(ы): Чарльз Х. Мур Основные реализации …   Википедия

  • Forth (язык программирования) — Forth Семантика: императивный Тип исполнения: интерпретатор/компилятор Появился в: 1971 г. Автор(ы): Чарльз Х. Мур Основные реализации: gForth, pForth, kForth, SP Forth, win32forth …   Википедия

  • Oz (язык программирования) — Oz Семантика: функциональный, процедурный, декларативный, объектно ориентированный, вычисления с ограничениями, Н модели, параллельные вычисления Тип исполнения: компилируемый Появился в: 1991 Автор(ы): Gert Smolka his students Релиз …   Википедия

  • Self (язык программирования) — Self объектно ориентированный, прототипный язык программирования, который задумывался как развитие языка Xerox PARC, а потом в Стэндфордском университете. Это была экспериментальная разработка, целью которой было выяснить, насколько далеко можно… …   Википедия

  • Ада (язык программирования) — У этого термина существуют и другие значения, см. Ада. Ада Семантика: мультипарадигменный: конкурентное, обобщённое, императивное, объектно ориентированное, распределённое программирование Тип исполнения: компилируемый Появился в: 1980 …   Википедия

Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»