Въведение
Книгата систематично представя общите принципи на конструиране, основните методи за проектиране и основните техники за изпълнение на компилатора. Съдържанието включва: основни познания по граматика и език, принципи на проектиране и методи за конструиране на програми за лексикален анализ, различни технологии за граматичен анализ, технология за превод, управлявана от граматиката и генериране на междинен код, организация и управление на таблица със символи, оптимизация на код, организация на пространството за съхранение по време на изпълнение Basic познания по управление, генериране на обектен код, технология за паралелно компилиране и др.
Каталог с книги
Глава 1 Преглед на компилацията
1.1 Преводач и компилатор
1.2 Процес на компилатор и основна структура на компилатора
1.3 Метод за генериране на компилатор
1.4 Приложение на технологията за компилиране в разработката на софтуер
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 1
Упражнение 1
Глава 2 Основни познания по граматика и език
2.1 Преглед
2.2 Основни понятия за азбука и символен низ
2.2.1 Азбучен и символен низ
2.2.2 Операция със символен низ
2.3 Граматика и език Формална дефиниция
2.3.1 Официален език
2.3.2 Формална дефиниция на граматиката
2.3.3 Формално определение на езика
2.3 .4 Нормативно извеждане и нормативно редуциране
2.3.5 Рекурсивни правила и рекурсивност на граматиката
2.4 Фрази, директни фрази и манипулатор
2.4.1 Фрази и директни фрази
2.4.2 Дръжка
2.5 Неяснота между синтактично дърво и граматика
2.5.1 Извличане и синтактично дърво
2.5.2 Неяснота на граматиката
2.5.3 Премахване на граматичната неяснота
2.6 Класификация на граматиката и езика
2.7 Практичността на граматичните ограничения и трансформации
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 2
Упражнение 2
Глава 3 Лексикален анализ и крайни автомати
3.1 Функция на програмата за лексикален анализ
3.2 Словни символи и изходни текстови форми
3.2.1 Думи в езикови символи
3.2.2 Формата на изходните думи на програмата за лексикален анализ
3.3 Две дефиниции на езикови словесни символи
3.3.1 Normal form and normal set< /p>
3.3.2 Нормална граматика и нормална форма
3.4 Нормална форма и крайни автомати
3.4.1 Детерминирани крайни автомати (DFA)
3.4.2 Недетерминистични крайни автомати (NFA)
3.4.3 Конструиране на NFA от регулярен израз R
3.4.4 Method of determinizing NFA into DFA< /p>
3.4.5 Опростяване на DFA
3.4.6 Преобразуване от крайни автомати в нормална форма
3.5 Нормална граматика и крайни автомати
3.5.1 Метод на преобразуване от дясна линейна нормална граматика към крайни автомати
3.5.2 Метод на преобразуване от лява линейна нормална граматика към крайни автомати
3.5 .3 Метод на преобразуване от краен автомат към обикновена граматика
3.6 Метод за писане на програма за лексикален анализ
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 3
Упражнение 3
Глава 4 Синтаксисен анализ
4.1 Функция на програмата за синтактичен анализ
4.2 Метод за анализ отгоре и надолу
4.2.1 The idea of non-deterministic top-down analysis method
4.2.2 Лява рекурсия на граматиката и елиминиране на обратно проследяване
4.2.3 Пренаписване на не-LL(1) граматика в LL(1) граматика
4.2.4 Метод за анализ на рекурсивно спускане
4.2.5 Метод за прогнозен анализ и структура на таблицата за прогнозен анализ
4.3 Общи принципи на анализа отдолу нагоре
4.4 Анализ на приоритета на оператора
4.4.1 Преглед на метода
< p>4.4.2 Definition of operator precedence grammar4.4.3 Конструиране на релационна таблица за приоритет на оператора
4.4.4 Проектиране на алгоритъм за анализ на приоритет на оператора
< p>4.4.5 Construction of precedence function4.4.6 Ограничения на анализа на приоритета на оператора
4.5LR метод за анализ
4.5.1LR анализатор Принципът на работа и процесът на
4.5.2 LR(0) метод за анализ
4.5.3 Метод за анализ SLR(1).
4.5.4LR(1) метод за анализ
4.5.5LALR(1) метод за анализ
4.5.6 Приложение на метода за анализиране на LR към двусмислена граматика
4.5.7 Възстановяване на грешка в техниката за анализиране на LR
4.6 Метод за писане на програма за синтактичен анализ
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 4
< p>Exercise 4Глава 5 Технология за превод, управлявана от граматиката и генериране на междинен код
5.1 Преглед
5.2 Граматика на атрибутите
5.3 Преглед на граматически насочен превод
5.4 Междинен език
5.4.1 Обратен полски стил
5.4.2 Тернарно и дървовидно представяне
5.4.3 Кватернерни и триадресни кодове
5.5 Синтаксисно ръководен превод отдолу нагоре
5.5.1 Превод на прости аритметични изрази и инструкции за присвояване
5.5.2 Превод на булеви изрази
5.5.3 Превод на контролни оператори
5.5.4 Превод на оператори за цикъл
5.5.5 Изявления за кратко описание Превод на
5.5.6 Превод на оператори за присвояване, съдържащи елементи от масив
5.5.7 Превод на инструкции за извикване на процедури и функции
5.6 Превод, управляван от рекурсивен низходящ синтаксис
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 5
Упражнение 5
Глава 6 Организация и управление на таблицата със символи
6.1 Ролята на таблицата със символи
6.2 Организация на символната таблица
6.3 Създаване и търсене на таблицата със символи
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 6
Упражнение 6
Глава 7 Оптимизация на кода
< p>7.1 Overview of optimization7.2 Частична оптимизация
7.2.1 Метод за разделяне на основни блокове
7.2.2 DAG представяне на основни блокове
< p>7.2.3 Use DAG to optimize basic blocks7.3 Оптимизация на цикъла
7.3.1 Схема на потока на програмата и цикъл
7.3.2 Циклично търсене
7.3.3 Оптимизация на цикъла
7.4 Оптимизация на шпионка
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 7
Упражнение 7
Глава 8 Организация и управление на съхранението по време на изпълнение
8.1 Преглед
8.2 Static Storage Allocation< /p>
8.3 Разпределение на подредено хранилище
8.3.1 Разпределение на просто подредено хранилище
8.3.2 Разпределение на подредено съхранение за вложен процес
8.4 Разпределение на памет за памет
8.5 Разпределяне на памет за временни променливи
Резюме на тази глава
Разширено четене
Self-test exercise 8< /p>
Упражнения 8
Глава 9 Генериране на обектен код
9.1 Преглед
9.2 Хипотетичен компютърен модел
9.3 Прост генератор на код
9.3.1 Информация в режим на готовност и активна информация
9.3.2 Алгоритъм за генериране на код
9.3.3 Разпределение на регистъра
Технологията за автоматично генериране на генератор на код 9.4
Резюме на тази глава
Разширено четене
Упражнение за самопроверка 9
Упражнение 9
Глава 10 Основни познания за технологията за паралелно компилиране
10.1 Въвеждане на технологията за паралелно компилиране
10.2 Функция и структура на системата за паралелно компилиране
10.2.1 Функция на системата за паралелно компилиране
10.2.2 Структура на система за паралелно компилиране
10.3 Технология за компилиране на векторен език
10.3.1 Обработка на векторен синтаксис
p>10.3.2 Оптимизиране на векторната структура
10.4 Технология за паралелно компилиране на паралелна машина със споделена памет
10.4.1 предварителна компилация
10.4.2 can be re Imported target code p>
Резюме на тази глава
Упражнение 10
Приложение A Генератор на лексикален анализатор Lex
A.1 Въведение в генератора на лексикален анализатор Lex
p>Формат на входен файл A.2Lex
A.3 Lex конвенции за регулярни изрази
A.4Правила на изходната програма на Lex
A.5 Опции на командата Flex
Пример за програма A.6Lex
Приложение B Генератор на програма за анализ на синтаксиса YACC
B.1 Въведение to the syntax analysis program YACC< /p>
B.2 YACC входен файлов формат
B.3 YACC формат за писане
B.3.1 дефиниционна част
B.3.2 Раздел Правила
B.3.3 Секция за спомагателна програма
B.4YACC вграден механизъм за име и дефиниция
Комбинираната употреба на B.5Flex и Bison
Приложение C Експерименти с компилатор
C.1 Лексикален анализ
C.1.1 Цели на експеримента
C.1.2 Изисквания за експеримента
C.1.3 Алгоритмични идеи на програма за лексикален анализ
C.1.4 C езикова програмна рамка на програма за лексикален анализ
C.2 Синтаксисен анализ
C.2.1 Целта на експеримента
C.2.2 Експериментални изисквания
C.2.3 The algorithm idea of the syntax analysis program
C.2.4 Програмната рамка на езика C на програмата за анализ на синтаксиса
p>C.3 Семантичен анализ
C.3.1 Експериментална цел
C.3.2 Експериментални изисквания
C.3.3 Език C за програма за семантичен анализ Програмна рамка
C.4 Метод за анализ на приоритета на оператора
C.5 Експериментален пример
C.6 Преобразуване на формална форма в графично представяне на автомати
p>C.6.1 Експериментална цел
C.6.2 Експериментални изисквания
C.6.3 Референтни дизайнерски идеи
C.6.4 Референтен алгоритъм
Приложение Г упражнения за самопроверка и справочни отговори на упражнения
Препратки