Введение Глава 1 Глава 2 Глава 3 Глава 4 Заключение Литература Приложения
Заключение
В работе были рассмотрены вопросы построения расширяемых и переносимых инструментальных систем. Работа включала в себя следующие подзадачи:
- анализ пригодности языков программирования на соответствие требованиям расширяемых систем и требованиям надежности;
- выбор схемы трансляции и реализация семейства переносимых компиляторов;
- анализ существующих расширяемых систем, выявление недостатков и способов их преодоления;
- реализация ядра РПС;
- отработка методов переноса компиляторов и системы.
Перечислим основные результаты исследований и реализации:
- Выработан набор критериев, которым должен удовлетворять язык реализации РПС. Показано, что язык Оберон-2 удовлетворяет этим критериям.
- Предложена методика реализации мало-языковых транслирующих систем, заключающаяся в фиксации языкового надмножества набора семантически близких языков, построении анализатора для этих языков в единое внутреннее представление и реализации генерации с внутреннего представления для каждой платформы, на которую необходимо перенести компиляторы. Показано, что для пары близких языков (в нашем случае Модула-2 и Оберон-2) трудозатраты на реализацию семейства переносимых компиляторов ненамного превышают затраты на разработку переносимого компилятора для одного языка. Выполнен анализ схем трансляции и обоснован выбор такой схемы, при которой внутреннее представление между фазами анализа и синтеза является синтаксическим деревом в памяти.
- Проведена разработка внутреннего представления и реализованы анализаторы языков Модула-2 и Оберон-2. Эти языки достаточно близки как синтаксически, так и семантически, что позволило выделить общую часть, включающую такие компоненты, как лексический анализ, обработка ошибок, таблицу символов, импорт/экспорт.
- Проведена разработка генерации кода для процессоров i386/486 и Кронос, а также генерация текста на языке ANSI C, что позволяет переносить транслирующую систему на любую платформу, для которой есть ANSI C компилятор (то есть на любую платформу, кроме ЭВМ Кронос). Простота реализации такой генерации в первую очередь обусловлена выбором синтаксического дерева в качестве внутреннего представления.
- Проведен анализ расширяемых систем на примере системы Оберон. Выявлен ряд недостатков системы Оберон (см. 4.7). Показана важность реализации в ядре системы механизмов финализации и постоянных объектов.
- Выполнено проектирование ядра РПС. Показано, как с использованием только одиночного наследования можно построить универсальные расширяемые механизмы ввода/вывода, сохранения контекста ошибок, и т.д. Основное внимание уделено поддержке разработки прикладных систем. Ядро РПС определяет и реализует набор механизмов, позволяющих существенно упростить разработку приложений.
- Совместно с А. Никитиным (оконная система, графика) и А. Хапугиным (динамическая поддержка, загрузчик) реализовано ядро РПС Мифрил.
- Выполнен перенос системы Мифрил в среду MS-DOS.
Достаточно интересными представляются возможности развития системы. В первую очередь, это реализация генераторов кода для распространенных RISC процессоров и перенос системы Мифрил в развитые обстановки, такие как X-Windows, OS/2 и Windows NT.
Введение Глава 1 Глава 2 Глава 3 Глава 4 Заключение Литература Приложения