Андронкин Никита
Горно-Алтайск, ДЦКТ
Гимназия № 3, 10 класс
Развитие и совершенствование языков программирования и соответствующих инструментальных средств разработки представляет собой одно из основополагающих направлений современной информатики. Потребность в мощных, гибких и надежных языковых инструментах, адекватных предельному уровню сложности и ответственности задач, решаемых программным обеспечением, определяет высокую активность исследований и разработок в данной области.
Долгое время основным инструментарием разработчика программного обеспечения служил традиционный компилятор некоторого языка программирования, который, воспринимая на входе текст программы на некотором языке генерировал, соответственно, либо готовый к исполнению машинный код, либо программу на некотором промежуточном языке.
Задачей компилятора является полный перевод программы, написанной на одном из языков программирования (исходный язык) в семантически эквивалентную программу на другом языке программирования (целевой язык) до начала ее выполнения. В общем виде процесс компиляции представлен на рисунке.
Основная задача лексического анализатора заключается в разбиении исходной программы на минимально значимые конструкции языка - лексемы. В большинстве случаев в основе реализации лексических анализаторов лежат конечные автоматы и регулярные выражения. На этапе синтаксического анализа осуществляется разбор структуры программы, проверка синтаксической корректности. Результатом работы синтаксического анализатора является представление исходной программы в виде синтаксического дерева, которое в дальнейшем может быть преобразовано во внутреннее представление для целей оптимизации.
В процессе семантического анализа осуществляется проверка наличия семантических ошибок в исходной программе (например, проверка типов данных). На этапе генерации кода осуществляется преобразования программы в промежуточном представлении в исполняемый файл или в представление на целевом языке.
Автором разработан 32-х разрядный компилятор диалекта языка Pascal. В языке реализована поддержка следующих конструкций:
Также возможно создание процедур. Целевой архитектурой компилятора является IA32. В процессе работы компилятор генерирует представление исходной программы на языке ассемблера.
Научные руководители: Гришина Т.Г., Курносов М.Г.