+
Действующая цена700 499 руб.
Товаров:
На сумму:

Электронная библиотека диссертаций

Доставка любой диссертации в формате PDF и WORD за 499 руб. на e-mail - 20 мин. 800 000 наименований диссертаций и авторефератов. Все авторефераты диссертаций - БЕСПЛАТНО

Расширенный поиск

Принципы и методы создания компилятора переднего плана Стандарта Cu ++

  • Автор:

    Зуев, Евгений Александрович

  • Шифр специальности:

    05.13.11

  • Научная степень:

    Кандидатская

  • Год защиты:

    1999

  • Место защиты:

    Москва

  • Количество страниц:

    174 с. : ил.

  • Стоимость:

    700 р.

    499 руб.

до окончания действия скидки
00
00
00
00
+
Наш сайт выгодно отличается тем что при покупке, кроме PDF версии Вы в подарок получаете работу преобразованную в WORD - документ и это предоставляет качественно другие возможности при работе с документом
Страницы оглавления работы


Оглавление
Введение
Стандартизация ЯП
Процесс стандартизации Ада и Си++
Новый взгляд на задачу компиляции
Современные подходы к архитектуре СП
Язык Си++ и компилятор переднего плана Си++
Цели и задачи диссертационной работы
Результаты, апробация и новизна работы
Глава 1. Фазы компиляции и организация лексического разбора
1.1. Фазы компиляции. Различные формы реализации фаз
1.2. Предварительная обработка исходного текста: фазы
1.3. Особенности препроцессорной обработки: фазы
1.4. Завершение лексического разбора. Концепция непрерывной компиляции
1.5. Лексическая структура Си++
1.5.1. Подход к определению базового множества лексем
1.5.2. Классификация лексем базового множества
1.5.3. Модификация базового множества. Суперлексемы
1.5.4. Агрегация
1.5.5. Сепарация
1.5.6. Динамическое расширение
Заключение. Выводы главы
Глава 2. Синтаксический анализ языка Си++
2.1. Введение. Общая структура компилятора
2.2. Интерфейс фазы синтаксического анализа
и требования к его реализации
2.3. Основной принцип реализации синтаксического анализатора
2.4 Операция динамического расширения и механизм состояний
2.5 Разбор выражений языка Си++
Выводы главы
Глава 3. Управление контекстом компиляции и структура
семантических таблиц
3.1. Правила видимости имен в языке Си
3.2. Правила видимости в Си++

3.2.1. Единое пространство имен
3.2.2. Область действия объявления класса
3.2.3. Лексическая вложенность и отношения областей действия
3.2.4. Механизм наследования
3.2.5. Особенности вложенных и локальных классов
3.2.6. Дружественные функции
3.2.7. Пространства имен
3.3. Проблемы и требования
3.4. Традиционная организация семантических таблиц
3.5. Модель организации семантических таблиц для Си++
3.6. Обсуждение, замечания и примеры
3.7. Модельные операции управления контекстом
Заключение. Выводы главы
Глава 4. Механизм шаблонов и модель компиляции для Си++
4.1. Типовая параметризация структур данных и алгоритмов
4.2. Основные требования к реализации шаблонов
4.3. Модель семантических таблиц и механизм шаблонов
4.4. Представление параметров шаблона
4.5. Семантические отношения для механизма шаблонов
4.5.1. Отношение настройки
4.5.2. Отношение специализации
4.6. Модельные операции для механизма шаблонов
4.7. Модель программы Си++:
раздельная компиляция или модульность
4.8. Раздельная компиляция и механизм шаблонов
4.9. Поддержка механизма шаблонов на уровне системы программирования
4.10. Семантические таблицы и продвинутая модель компиляции
4.11. Концепция непрерывной компиляции
4.12. Расширенное множество операций модели семантических таблиц
Выводы главы
Заключение
Литература
Введение
OQOQV>0100-yffoOojbOiyrOOOOOQQOOCCeOOfYV

Развитие и совершенствование языков программирования (ЯП) и соответствующих инструментальных средств разработки представляет собой одно из основополагающих направлений современной информатики, технологии и практики индустриального программирования. Потребность в мощных, гибких и надежных языковых инструментах, адекватных предельному уровню сложности и ответственности задач, решаемых программным обеспечением (ПО), определяет высокую активность исследований и разработок в данной области.
В настоящее время сложились две основных тенденции, связанные с проектированием и реализацией ЯП.
1. Центр тяжести в этой сфере смещается от проектирования и освоения новых языков программирования в сторону строгой (насколько это возможно), исчерпывающей и недвусмысленной спецификации известных и зарекомендовавших себя ЯП. Это направление тесно связано с процессом международной стандартизации ЯП.
2. Все возрастающее внимание обращается как на эффективность и адекватность традиционного инструментария программирования -компиляторов, так и на качественное изменение задач, которые призваны решать современные системы (среды) разработки. Последнее выражается в существенном расширении сферы применения традиционных принципов, методов и технологий компиляции.
Рассмотрим эти направления подробнее.
Стандартизация ЯП
За последние пять лет в области языков программирования сложилась явная тенденция, которую можно охарактеризовать как процесс приведения распространенных ЯП промышленного назначения к унифицированным и международно признанным формам. Эта тенденция проявилась в активности международной организации (ISO - International Standard Organization) и авторитетных национальных институтов (прежде всего, ANSI - American National Standard Institute), воплотившейся в успешной стандартизации нескольких крупных ЯП. Ряд других ЯП находятся в настоящее время на различных стадиях процесса стандартизации.
Далее мы кратко рассмотрим наиболее интересные и существенные аспекты этой тенденции. Но сразу же необходимо отметить, что тенденция стандартизации имеет глубокие причины, которые, на наш взгляд, заключаются в следующем:
Сложность. Программно-управляемые системы промышленного, оборонного, научноого и научно-технического назначения достигли некоего порога сложности, за которым степень адекватности языковых инструментов становится предельно критичной. Ходом технического

4. "Склеивание" строк исходного текста.
Замена триграфов и "склеивание" строк (удаление пар символов "обратная косая черта" и "конец строки") присутствуют, в основном, по историческим причинам и поэтому в данном рассмотрении не представляют интереса. Таким образом, сосредоточимся на операциях 1 и 3.
Операция 1 [Std, 2.1, §1, п.1], как она специфицирована в Стандарте, фиксирует лишь факт преобразования, никак не задавая его содержательной стороны. При этом специально подчеркивается, что на практике вместо базового множества исходных символов может использоваться любая внутренняя кодировка, если обработка символов в этой кодировке будет выполняться так, как задано Стандартом. Таким образом, Стандарт жестко не определяет ни внешнюю кодировку исходного текста, ни его внутреннее представление. От реализации требуется лишь выдержать функциональность фаз, которая описывается в терминах базового множества исходных символов и универсальных-имен-символов.
Внутренний алфавит - базовое множество исходных символов [Std,
2.2, §1] - включает общеупотребительный набор: символ пробела, четыре управляющих символа, латинские буквы в обоих регистрах, десять цифр и традиционные знаки препинания, разделители и символы операций. Повторим, что конкретная кодировка символов этого алфавита не фиксируется. Очевидно, что такое множество символов имеется практически в любой из общеупотребительных кодировок, в частности, в основной и альтернативной DOS-кодировках, СР866, СР1251 и т.д.
Резюмируя сказанное, сформулируем следующие требования к реализации операции 1:
а) Если форма представления (кодировка), используемая в исходном тексте, допускает представление символов базового множества, то операция 1 может быть тождественной. Иными словами, в качестве внутреннего алфавита может использоваться алфавит исходного текста.
б) Алфавит исходного текста может не содержать каких-либо символов из числа следующих: #, /, [. ], |, {, }, В этом случае отсутствующие символы могут представляться в исходном тексте с помощью триграфов, а эквивалентные им символы внутреннего представления - универсальными-именами-символов. Такой вариант сохраняет тождественность операции 1.
в) Если алфавит исходного текста не включает какой-либо из перечисленных символов, а их внутреннее представление в виде универсальных-имен-символов нежелательно, то в качестве внутреннего алфавита может быть выбрана любая кодировка, содержащая указанные символы. В этом случае операция 1 должна представлять собой прямое отображение (mapping) символов входного алфавита в эквивалентные им символы внутреннего алфавита.

Рекомендуемые диссертации данного раздела

Время генерации: 0.111, запросов: 967