Содержание
- 2. Содержание Задачи проекта. Компилятор Zonnon для .NET. Технология: пакет CCI. Интеграция в VS. Скриншоты и/или демонстрация.
- 3. Задачи проекта Реализовать базовую версию компилятора для платформы Microsoft .NET: - подмножество входного языка; - генерация
- 4. Компилятор Zonnon Реализован для платформы .NET Генерирует стандартную сборку (Assembly) Реализован с использованием пакета CCI Интегрирован
- 5. Компиляторы для .NET: возможные подходы Непосредственная («ручная») компиляция в MSIL/Metadata (нет примеров) или в язык ассемблера
- 6. Модель компиляции Zonnon (1) 6
- 7. Модель компиляции Zonnon (2) IR (AST) Zonnon AST CCI’s AST Scanner & Parser Visitors Проекции Реализуется
- 8. Проекции Zonnon -> .NET ◆ DEFINITION абстрактный интерфейс; interface ◆ IMPLEMENTATION реализация интерфейса по умолчанию; единица
- 9. DEFINITION D; TYPE e = (a, b); VAR x: T; PROCEDURE f (t:T); PROCEDURE g ():T;
- 10. C# Проекции Zonnon->.NET: Objects Zonnon OBJECT X IMPLEMENTS D; IMPORT D; VAR y : T; PROCEDURE
- 11. C# Проекции Zonnon->.NET: Active Objects Zonnon 11
- 12. CCI: Основа Zonnon-компилятора CCI = Common Compiler Infrastructure. CCI – набор ресурсов (классов), предоставля-ющих поддержку реализации
- 13. CCI: сценарии использования Интеграция в VS.NET существующих (“не-CCI”) компиляторов. Интеграция в VS.NET компиляторов, полностью реализованных на
- 14. CCI: Три проблемы (Общая) Разработка компилятора – непростая задача; интеграция компилятора в среду программирования – целый
- 15. Общие принципы использования CCI ◆ Все сервисы CCI представлены в виде классов. Чтобы воспользоваться этими сервисами,
- 16. Компоненты CCI Intermediate Representation (IR) – Развитая иерархия C#-классов, представляющих наиболее общие и типичные понятия современных
- 17. IR: промежуточное представление (1) Node Node Expression Member UnaryExpression TypeNode BinaryExpression Class NaryExpression DelegateNode MethodCall EnumNode
- 18. IR: промежуточное представление (2) Характеристики IR: ◆ Весьма прямолинейный подход. ◆ IR почти полностью повторяет иерархию
- 19. IR: промежуточное представление (3) public class C { public int m1; public void f ( )
- 20. Система трансформаций IR в CCI …готовя дерево к сериализации (генерации IL+MD). …разрешая случаи совместного использования (overloading)
- 21. Организация синтаксического анализа using System.Compiler; namespace ZLanguageCompiler { public sealed class ZParser : System.Compiler.Parser { public
- 22. Работа с IR: расширение Visitor’ов using System.Compiler; namespace ZLanguageCompiler { public sealed class ZLooker : System.Compiler.Looker
- 23. Обработка IR: Активация Visitor’ов public class ZCompiler : System.Compiler.Compiler, ... { . . . protected override
- 24. Архитектура компилятора: традиционный подход Compiler Start Up Compiler End Up Компилятор Лексич. анализ Синт. & семантич.
- 25. Что подразумевается под интеграцией? Компоненты среды Visual Studio Менеджер проектов Текстовый редактор Семантическая поддержка (“Intellisense”) Отладчик
- 26. Что подразумевается под интеграцией? Пример “Intellisense” 26
- 27. Архитектура CCI-компилятора (1) Лексич. анализ Синт. & семантич. анализ Генера-ция кода Компилятор Окружение Document Исходный текст
- 28. Архитектура CCI-компилятора (2) Лексич. анализ Синт. & семантич. анализ Генера-ция кода Окружение Document Исходный текст Контекст
- 29. Архитектура CCI-компилятора (3) Лексический анализ Синтаксический & семантический анализ Получить лексему Получить лексему с доп. атрибутами
- 30. CCI: текущее состояние и статус Реализован почти полностью (неполная поддержка процесса отладки); не отлажен; не документирован.
- 31. Интеграция Zonnon-компилятора в VS (1) (Вместо демонстрации ☺) 31
- 32. Интеграция Zonnon-компилятора в VS (2) (Вместо демонстрации ☺) 32
- 33. Интеграция Zonnon-компилятора в VS (3) (Вместо демонстрации ☺) 33
- 35. Скачать презентацию