Этапы жизненного цикла программного продукта.
Состав и схема функционирования классической системы программирования.
Типы трансляторов, особенности интерпретаторов и компиляторов.
Общая схема работы компилятора.
Определение порождающей грамматики.
Определение языка, порождаемого грамматикой.
Определение эквивалентности грамматик.
Определение типов грамматики и языков по Хомскому.
Соотношения между типами грамматик.
Соотношения между типами языков.
Определение неоднозначности грамматики и языка.
Определение недостижимых и бесполезных символов, определение приведенной грамматики.
Определение детерминированного конечного автомата (КА).
Диаграмма состояний (ДС) для заданной леволинейной регулярной грамматики. Построение ДС.
Определение недетерминированного конечного автомата (НКА).
Алгоритм построения детерминированного конечного автомата по НКА.
Задачи лексического анализа.
Организация классов таблиц лексического анализатора.
Метод рекурсивного спуска: назначение, семантика процедур метода рекурсивного спуска.
Достаточные условия применимости метода рекурсивного спуска.
Расширение класса грамматик, к которым применим метод рекурсивного спуска (проблемы, преобразования, эквивалентность предлагаемых преобразований).
Задачи семантического анализа.
Свойства языка внутреннего представления программы, примеры таких языков.
Синтаксически управляемый перевод: идея, принципы организации, примеры.
ПОЛИЗ выражений.
ПОЛИЗ операторов языков программирования.
Интерпретация ПОЛИЗа.
Основные методы динамического распределения памяти (явного и неявного).
Машинно-независимая оптимизация. Основные оптимизирующие преобразования.
Машинно-зависимая оптимизация. Основные оптимизирующие преобразования.
Интегрированная среда разработки (ИСР).
Основные функции редактора текстов в рамках ИСР.
Основные функции отладчика в рамках ИСР.
Назначение и функционирование редактора связей. Загрузчик.
Библиотеки. Основные типы библиотек.
Критерии проектирования стандартных библиотек. Стандартная библиотека STL.
STL: контейнеры, итераторы, алгоритмы, аллокаторы. Шаблоны vector и list.
Определить, к какому типу по Хомскому относится заданная грамматика.
Определить тип языка, порождаемого данной грамматикой.
Построить грамматику [определенного типа], порождающую заданный язык.
Определить, какой язык порождает заданная грамматика.
Построить дерево вывода (разбора) заданной цепочки по заданной КС-грамматике.
Получение приведенной грамматики.
Дана леволинейная регулярная грамматика. Построить по ней ДС, по ДС написать анализатор на С++.
Дана ДС конечного автомата. Восстановить леволинейную регулярную грамматику, порождающую язык, распознаваемый этим автоматом.
Дан текст анализатора на С++. Восстановить леволинейную регулярную грамматику по данному анализатору.
Дана леволинейная регулярная грамматика, которой соответствует НКА. Построить эквивалентный детерминированный КА (использовать алгоритм построения детерминированного КА по НКА).
Применим ли метод рекурсивного спуска к заданной КС-грамматике. Ответ обосновать.
Преобразовать заданную КС-грамматику так, чтобы к ней был применим метод рекурсивного спуска.
Для заданной КС-грамматики построить анализатор методом рекурсивного спуска.
Дан анализатор, написанный методом рекурсивного спуска. Восстановить КС-грамматику.
Дана грамматика с действиями. Какой язык она порождает?
Дана КС-грамматика. Дополнить ее действиями, позволяющими учесть дополнительные ограничения на цепочки определяемого языка.
Дана грамматика (или написать грамматику) языка L1. Вставить в грамматику действия по переводу цепочек языка L1 в цепочки языка L2.
Дана грамматика с действиями, осуществляющими перевод цепочек языка L1 в цепочки языка L2. Описать языки L1 и L2.
Записать в ПОЛИЗе заданный фрагмент программы на языке Х.
Задан фрагмент программы в ПОЛИЗе. Восстановить текст на языке Х.
Определить, является ли данная запись ПОЛИЗом заданной конструкции.
Разработать ПОЛИЗ заданной конструкции некоторого языка. Вставить в грамматику действия, порождающие ПОЛИЗ этой конструкции.
Решение простейших задач с использованием компонент библиотеки STL (vector и list).