Система программирования PascalABC.NET - Курсовая работа

бесплатно 0
4.5 61
Структура компилятора PascalABC.NET. Структура дерева и примеры узлов. Упрощенный синтаксис записи модулей. Объявление имен, совпадающих с ключевыми словами. Генерация узла семантического дерева. Сериализация и десериализация узлов семантического дерева.


Аннотация к работе
Структура компилятора PascalABC.NET 4. Синтаксическое дерево 4.1 Концепция визиторов 4.2 Структура дерева и примеры узлов 4.3 Редактор синтаксического дерева 5. Синтаксический анализатор 5.1 Интерфейс подключения 5.2 Язык PascalABC.NET 5.2.1 Процедуры с переменным числом параметров 5.2.2 Операция new 5.2.3 Упрощенный синтаксис записи модулей 5.2.4 Определение методов внутри класса 5.2.5 Перегрузка операций 5.2.6 Шаблоны 5.2.7 Директивы компилятора 5.2.8 Операции = -= 5.2.9 Методы в записях 5.2.10 Объявление имен, совпадающих с ключевыми словами 5.3 Генератор синтаксических анализаторов 5.4 Генерация синтаксического анализатора языка PascalABC.NET 5.5 Диагностика сообщений об ошибках 6. Семантическое дерево 6.1 Узел для представления операции is 6.2 Узел для представления операции sizeof 7. Семантический анализатор 7.1 Таблица символов 7.1.1 Дерево областей видимости 7.1.2 Общий алгоритм поиска 7.1.3 Иерархия областей видимости 7.1.4 Алгоритмы поиска в областях видимости 7.1.5 Алгоритмы поиска в таблице символов 7.2 Генерация узлов семантического дерева 7.2.1 Операции is, as 7.2.2 Операции typeof, sizeof 7.2.3 Операция new 7.2.4 Типизированные и бинарные файлы 7.2.4.1 Часть кода, реализованная на PascalABC.NET 7.2.4.2 Генерация узла семантического дерева 7.2.4.3 Проверки этапа компиляции 7.2.4.4 Реализация процедуры read 7.2.5 Изменяемые строки string 7.3 Генерация сообщений об ошибках 8. Генератор кода 8.1 Перевод семантического дерева в IL код 8.2 Перевод конструкций в IL код 8.2.1 Операции is, as 8.2.2 Операции typeof, sizeof 9. Промежуточная форма хранения программы (PCU) 9.1 Выбор промежуточной формы хранения программы 9.2 Варианты использования PCU 9.3 Схема компиляции с использованием PCU 9.4 Сериализация и десериализация некоторых узлов семантического дерева 10. Модули визуальной оболочки 13.1 Интерфейс подключения 13.2 Модуль «Визуализатор синтаксического дерева» 13.3 Модуль «Управление компилятором» 13.4 Модуль «Контроль внутренних ошибок» 14. Подключение задачника Programming Taskbook 14.1 Модуль на языке PascalABC.NET 14.2 Модуль визуальной оболочки Заключение Литература ПРИЛОЖЕНИЕ 1. Ее прототип - компилятор Pascal ABC - основан на языке Object Pascal и успешно используется на факультете Математики Механики и Компьютерных Наук Южного федерального университета при обучении основам программирования. В качестве целевой платформы для реализации выбрана Microsoft .NET. Он содержит также базовую иерархию ошибок, алгоритм компиляции модулей и алгоритмы чтения/записи внутреннего представления (PCU файлов). Контроллер парсеров - это класс (класс - абстрактный тип данных, который включает в себя не только данные, но и функции и процедуры), который контролирует подключение различных парсеров к компилятору. Рассмотрим реализацию паттерна «посетитель» на примере узла if_node: public class if_node : statement { punlic expression condition; public statement then_body; public statement else_body; public override void visit(IVisitor visitor) { visitor.visit(this); } } У узла if_node есть функция visit, которой на вход подается объект visitor, реализующий интерфейс IVisitor. } Запустить визитор по дереву можно следующим образом: visitor vs = new visitor(); if_node if_n = new if_node(); if_n.visit(vs); 4.2 Структура дерева и примеры узлов syntax_tree_node - базовый класс синтаксического дерева программы public class syntax_tree_node { public syntax_tree_node(SourceContext _source_context) { source_context = _source_context; } public SourceContext source_context; public virtual void visit(IVisitor visitor) { visitor.visit(this); } } Базовый класс содержит функцию visit, необходимую для обхода дерева посетителем, и объект класса SourceContext. public class file_position { public int line_num public int column_num } public class SourceContext { public file_position begin_position public file_position end_position public override string ToString() } Класс SourceContext служит для хранения позиции данной конструкции в тесте программы. compilation_unit - базовый класс для узлов program_module и unit_module. public class compilation_unit : syntax_tree_node { public string file_name public List compiler_directives public override void visit(IVisitor visitor) } Хранит имя файла программы и список директив компилятора. program_module - класс для представления основной программы. public class program_module : compilation_unit { public program_name program_name public uses_list used_units public using_list using_namespaces public block program_block public override void visit(IVisitor visitor) } Хранит имя программы, список подключенных модулей, список подключенных пространств имен и блок программы. unit_module - класс для представления модуля public class unit_module : compilation_unit { public unit_name unit_name public interface_node interface_part public implementation_node implementation_part public statement_list initialization_part public statement_list finalization_part public override void visit(IVisitor visitor) }
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?