Компилятор ETH Zonnon для .NET
description
Transcript of Компилятор ETH Zonnon для .NET
![Page 1: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/1.jpg)
1
Нижегородский государственный университет им. Н.И. Лобачевского
Компилятор ETH Zonnon для .NET
Compiler Project
По материалам презентации Е.А. Зуева. Москва, 2003
![Page 2: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/2.jpg)
2
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Язык Zonnon
Авторы Jürg Gutknecht, ETH Zürich Евгений Зуев, ETH Zürich
Первый компилятор с языка Zonnon для платформы .NET реализован в Швейцарском федеральном технологическом институте Евгением Зуевым
![Page 3: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/3.jpg)
3
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
План
Проблемы исследовательских языков и компиляторов
Компилятор ETH Zonnon Технология CCI Интеграция в VS
![Page 4: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/4.jpg)
21/04/23
Нижегородский государственный университет им. Н.И. Лобачевского
Исследовательские языки на платформе .NET
По материалам презентации Nick Benton, Microsoft Research, Cambridge UK
![Page 5: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/5.jpg)
5
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Языки программирования
C, C++, Visual Basic, Java, JScript, Perl, Cobol,... подходят для большинства коммерческих и индустриальных проектов
Но содержат в себе только часть существующих разработок в области языков программирования
![Page 6: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/6.jpg)
6
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Проблема Для разработчиков языков программирования
Большой объем работы, которую нужно выполнить для реализации компилятора для нового язык. Большая часть которой не является специфичной для него как: Сборка мусора Многопоточность Линковка Среда разработки Машинно-зависимые оптимизации
И если вы хотите что-либо делать на новом языке, то вам нужно реализовать богатую стандартную библиотеку
![Page 7: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/7.jpg)
7
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Проблема Для разработчиков
Библиотеки и межъязыковое взаимодействие в исследовательских компиляторах никогда не бывают достаточно хороши. Склеивание нового кода со старым приводит Созданию автоконвертаторов Общее низкоуровневое представление … В итоге считается что лучше всё писать на C++
Среда разработки также редко бывает сильно продвинутой.
![Page 8: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/8.jpg)
8
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Решение
.NET Common Language Runtime предоставляет богатый набор сервисов для разработчиков компиляторов Таким образом становится гораздо проще создать
работающую систему с хорошей производительностью
Предоставляет естественную систему типов, менеджер памяти, загрузчик, и т.д. упрощая межъязыковое взаимодействие Вы можете обращаться к широко используемым
библиотекам и компонентам приложений написанным на других языках напрямую
![Page 9: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/9.jpg)
9
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Исследовательские языки и платформа .NET
Microsoft работает с ведущими исследователями в области языков программирования по всему миру Перенцацеливание их любимых языков
на платформу .NET Демонстрация межъязыкового
взаимодействия
![Page 10: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/10.jpg)
10
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Haskell
Oz
Caml
Mercury
Standard ML
Component Pascal
Lightning Oberon
Scheme
Eiffel
Lightning Oberon
![Page 11: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/11.jpg)
11
Нижегородский государственный университет им. Н.И. Лобачевского
Компилятор Zonnon для .NET
По материалам презентации Е.А. Зуева. Москва, 2003
![Page 12: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/12.jpg)
12
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Задачи проектаETH Zonnon Compiler
• Реализовать базовую версию компиляторадля платформы Microsoft .NET:- подмножество входного языка;- генерация MSIL-кода в полном формате;- режим командной строки.
• Обеспечить полную интеграцию компилятора со средой разработки MS Visual Studio .NET:- текстовый редактор;- фоновая компиляция;- управление проектами;- отладчик etc.
• Выполнить “раскрутку” (bootstrapping) полного компилятора на языке Zonnon.
![Page 13: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/13.jpg)
13
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Компилятор Zonnon
• Реализован для платформы .NET• Генерирует стандартную сборку (Assembly)• Реализован с использованием пакета CCI• Интегрирован в среду MS Visual Studio .NET• Создан в ETH Zürich, Switzerland
Visual Studio
.NET Platform
CCI Framework
Zonnon CompilerSourceCode
Assembly
![Page 14: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/14.jpg)
14
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Компиляторы для .NET:возможные подходы
• Непосредственная («ручная») компиляцияв MSIL/Metadata (нет примеров) или в языкассемблера MSIL («toy compilers»).
• Использование «родного» для .NET языка(напр. C#) в качестве промежуточного (Eiffel)
• Генерация MSIL-кода средствами низкого уровня из пространств имен System.Reflection иSystem.Reflection.Emit (Component Pascal, авт. John Gough; Oberon.NET)
• Высокоуровневая поддержка - CCI:построение дерева программыс (полу)автоматической генерацией IL+MD(ASML, Zonnon for .NET).
![Page 15: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/15.jpg)
15
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Модель компиляции Zonnon
Zonnon-часть:Cпецифична для языка
IR(AST)
Source
Source
Scanner&
Parser
Visitors
CCI-часть:Общая для всех языков
Imported Assemblie
s
Imported Assemblie
s
MSIL+MDOutput
Assembly
Output Assembl
y
IL/MD Reader
IL/MD Writer
![Page 16: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/16.jpg)
16
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Модель компиляции Zonnon
IR(AST)
ZonnonAST
CCI’sAST
Scanner&
ParserVisitors
Проекции
Реализуется семантическая специфика Zonnon;
Выполняется сериализация «интерфейсной»части AST для последующей статическойкомплексации в собственных терминах языка
Проекции (mappings): отображение специфических свойств Zonnon на семантически эквивалентные структуры .NET
![Page 17: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/17.jpg)
17
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Проекции Zonnon -> .NET
DEFINITION абстрактный интерфейс; interface
IMPLEMENTATION реализация интерфейса по умолчанию; единица агрегации; class
OBJECT шаблон (класс), реализующий интерфейс; возможно, «активный» объект; sealed class
MODULE контейнер ресурсов; класс, управляемый системой; class with static members
![Page 18: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/18.jpg)
18
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
DEFINITION D; TYPE e = (a, b); VAR x: T; PROCEDURE f (t:T); PROCEDURE g ():T;END D;
interface D_i { T x { get; set; } void f(T t); T g (); };
C#
IMPLEMENTATION D; VAR y: T; PROCEDURE f (t: T); BEGIN x := t; y := t END f;END D;
public class D_c: D_b { T y; void f(T t) { x_b = t; y = t; } };
internal class D_b: D_i { private T x_b; public enum e = (a, b); public T x { get { return x_b }; set { x_b = ... }}};
Проекции Zonnon->.NET:Definitions & Implementations
Zonnon
![Page 19: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/19.jpg)
19
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
C#
Проекции Zonnon->.NET: Objects
ZonnonOBJECT X IMPLEMENTS D; IMPORT D; VAR y : T; PROCEDURE g (): T IMPLEMENTS D.g; BEGIN y := D.x; RETURN D.y END g;END X;
public sealed class X: D_I{ D_c d; T y; public override T g() { y = d.x; return d.y; } }
public sealed class X: D_i, D_c d;{ T y; public override T g() { y = x_b; return y_b }}
Проекция с отдельным
helper-классомПроекция
с базовым классом
![Page 20: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/20.jpg)
20
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Исходная конструкция
Проекция на C#
ACTIVITY S END Метод: void body() { S };Поле: Thread thread;
Создание активного объекта (неявный запуск «активности»)
x.thread = new Thread( new ThreadStart(body))x.thread.Start()
AWAIT cond; while ( !cond ){ Monitor.Wait(this); }
BEGIN { LOCKED } SEND
Monitor.Enter(this);S;Monitor.PulseAll(this);Monitor.Exit(this);
C#
Проекции Zonnon->.NET:Active Objects
Zonnon
![Page 21: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/21.jpg)
21
Нижегородский государственный университет им. Н.И. Лобачевского
Технология: пакет CCI.
По материалам презентации Е.А. Зуева. Москва, 2003
![Page 22: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/22.jpg)
22
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
CCI: Основа Zonnon-компилятора
CCI = Common Compiler Infrastructure.
CCI – набор ресурсов (классов), предоставля-ющих поддержку реализации компиляторов и других языковых инструментов для .NET
Реализация компиляторов; Интеграция компиляторов.
Концептуально, CCI является частью.NET Framework SDK.
Спроектирован и реализован в Microsoft;автор - Herman Venter.
![Page 23: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/23.jpg)
23
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
CCI: сценарии использования
• Интеграция в VS.NET существующих(“не-CCI”) компиляторов.
• Интеграция в VS.NET компиляторов, полностью реализованных на основе CCI
• Расширение существующих .NET-языков и компиляторов (C#, VB etc.).
• Создание процессоров для посткомпиляционной обработки.
• Учебные компиляторы!
![Page 24: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/24.jpg)
24
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
CCI: Три проблемы
• (Общая)Разработка компилятора – непростая задача; интеграция компилятора в среду программирования – целый спектр дополнительных проблем.
• (CCI)CCI реализует существенно отличный от традиционного подход к процессу компиляции.
• (Техническая)CCI имеет объемный и нетривиальный интерфейс, набор правил и «контрактов».
![Page 25: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/25.jpg)
25
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Общие принципы использования CCI
Все сервисы CCI представлены в виде классов. Чтобы воспользоваться этими сервисами, необходимо определить собственные классы, производные от классов CCI.
В производных классах необходимо обеспечить реализацию некоторых абстрактных методов классов-прототипов (они образуют «унифици-рованный интерфейс» с окружением).
Производные классы содержат функциональ-ность, реализующую собственную семантику компилятора.
![Page 26: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/26.jpg)
26
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Компоненты CCI
Intermediate Representation (IR) –
Развитая иерархия C#-классов, представляющих наиболее общие и типичные понятия современных ЯП
Поддержка интеграции –
Совокупность классов и методов, обеспечивающих интеграцию в среду Visual Studio (дополнительная функцио-нальность для редактирования, отладки, фоновой компиляции etc.)
Преобразователи (“Visitors”) –
Набор классов, реализующих последовательные преобразованияIR MSIL
System.Compiler.dll
System.Compiler.Framework.dll
![Page 27: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/27.jpg)
27
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»IR: промежуточное представление
Node Node Expression Member UnaryExpression TypeNode BinaryExpression Class NaryExpression DelegateNode MethodCall EnumNode Indexer Interface AssignmentExpression . . . Literal TypeParameter Parameter Pointer This Reference Statement Event AssignmentStatement Method If InstanceInitializer For StaticInitializer ForEach Field Continue Property ExpressionStatement Namespace VariableDeclaration CompilationUnit
Часть дерева наследования IR
![Page 28: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/28.jpg)
28
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
IR: промежуточное представление
public class If : Statement{ Expression condition; Block falseBlock; Block trueBlock; . . .}
public class Block : Statement{ bool hasLocals; StatementList statements; . . .}
Пример: Характеристики
IR: Весьма прямолинейный подход.
IR почти полностью повторяет иерархию понятий языка C#.
Включает поддержку некоторых языковых черт, отсутствующих в C#.
Поддерживает некоторые будущие свойства C# (напр., generics).
Вывод: архитектура IR достаточна для представления широкого спектра языков с традиционной парадигмой.
![Page 29: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/29.jpg)
29
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»IR: промежуточное представление
public class C{ public int m1; public void f ( ) { m1 = 0; }}
Class
Members
Field
Method
NameName
...
Flags
Type
Identifier
IdentifierInt32
Name
Flags
Type
Body
Identifier
Void
Block
...
Statements
Assignment-Statement
…
…
...
...
Пример: класс C#
![Page 30: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/30.jpg)
30
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Система трансформаций IR в CCI
…готовя дерево к сериализации (генерации IL+MD).
…разрешая случаи совместного использования (overloading) and вычисляя типы выражений;
…выполняя семантические проверки;
…заменяя узлы Identifier ссылкамина сущности, которые обозначает идентификатор;
StandardVisitor
Normalizer
Resolver
Checker
Looker
Declarer
Каждый Visitor обходит дерево IR…
• Можно модифицировать стандартные Visitor’ы и/или
• Написать собственные
![Page 31: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/31.jpg)
31
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Организация синтаксического анализа
using System.Compiler;
namespace ZLanguageCompiler{ public sealed class ZParser : System.Compiler.Parser { public … ParseCompilationUnit(...) public … ParseExpression(...) public … ParseStatements(...) . . .
private … ParseZModule(...) private … ParseZStatements(...) . . . }}
Прототип анализатора:
абстрактный класс CCI
“Унифицированный интерфейс” парсера: реализует интерфейс
между компилятором и окружением
Собственная логика Z-парсера
Вы
зов
ы
![Page 32: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/32.jpg)
32
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Работа с IR: расширение Visitor’ов
using System.Compiler;
namespace ZLanguageCompiler{ public sealed class ZLooker : System.Compiler.Looker { public override Node Visit ( Node node ) { switch ( node.NodeType ) { case ZNodeType.NewStmt: return this.VisitNewStmt((NewStmt)node); default: return base.Visit(node); } } public Node VisitNewStmt ( NewStmt node ) { /* Преобразование NewStmt в некоторый CCI-узел */ } }}
Пример расширения Looker’а Visitor-прототип:
абстрактный класс CCI
Метод-“диспетчер”
Семантическая обработка узла
![Page 33: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/33.jpg)
33
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Обработка IR: Активация Visitor’овpublic class ZCompiler : System.Compiler.Compiler, ...{ . . . protected override void Compile ( CompilationUnit cu, Class globalScope, ErrorNodeList errors ) { // Разрешение имен (new ZLooker(globalScope)).VisitCompilationUnit(cu); // Разрешение совм.использования и вычисление типов (new ZResolver()).VisitCompilationUnit(cu); // Семантические проверки; «исправление» дерева (new ZChecker(errors)).VisitCompilationUnit(cu); // Редукция дерева до узлов с предопред.отображением в MD+IL (new Normalizer().VisitCompilationUnit(cu); } . . .}
Общая схема работы с IR
Прототип компилятора:
абстрактный класс CCI
Типы узлов IR
Запуск Visitor’ов
![Page 34: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/34.jpg)
34
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Архитектура компилятора:традиционный подход
Compiler Start Up
Compiler End Up
Компилятор
Лексич.
анализ
Синт. &семантич. анализ
Генера-ция кода
Посл-тьлексем
Деревопрогр.
Исход.текст
Объект-ный код
Имя исход. файла
Пар-ры компиляции
Диагностическиесообщения
Файл с объектнымкодом
Окружение
Компиляторкак “черный ящик”
![Page 35: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/35.jpg)
35
Нижегородский государственный университет им. Н.И. Лобачевского
Интеграция в VS.
По материалам презентации Е.А. Зуева. Москва, 2003
![Page 36: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/36.jpg)
36
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Что подразумевается под интеграцией?
Компоненты средыVisual Studio
Менеджер проектов
Текстовый редактор
Семантическая поддержка
(“Intellisense”)
Отладчик
• Синтаксическая подсветка
• Автоматическое форматирование; структурн. проход по тексту {}• Синтаксические проверки на фоне ввода текста• «Плавающая» диагностика
• Вывод «содержимого» составного типа для переменной этого типа• Вывод списка совместно-исполь- зуемых методов• Вывод списка параметров
Поведение, которое должен поддерживать компилятор
• Вычисление выражений• Условные точки останова
• Запуск компиляции и сборка проектов
![Page 37: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/37.jpg)
37
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Что подразумевается под интеграцией?
Пример “Intellisense”
![Page 38: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/38.jpg)
38
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Архитектура CCI-компилятора
Лексич.
анализ
Синт. &семантич
.анализ
Генера-ция
кода
Окружение
Document
Исходный текст
Контекст
TokenTokenЛексема
Атрибуты
Контекст
Дерево программыОбъектный код
(Assembly)
Редактор ОтладчикМенеджер проектов
“Intellisense”
Ком
пи
лято
ркак н
аб
ор
об
ъекто
в
28
![Page 39: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/39.jpg)
39
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Архитектура CCI-компилятора
Лексический анализ
Синтаксический &семантический
анализ
Получить лексему
Получить лексемус доп. атрибутами
Компилировать программный
модульКомпилировать
выражение
Компилироватьпосл-ть операторов
. . .
Фаза компляции
Прогр. модули
![Page 40: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/40.jpg)
40
Нижегородский государственный университет им. Н.И. Лобачевского
Резюме
По материалам NET Crash Course, MSR Cambridge UK, March 2002
![Page 41: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/41.jpg)
41
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
• Handling compilerparameters & options supports --
• Source Code Reading supports --• Lexical Analysis --
supports• Syntax Analysis --
supports• Symbol Table partially supports --• Name Look-Up -- --• Program Tree supports --• Semantic Analysis -- --• Code Optimization -- (not necessary) --• Code Generation supports --• Error Handling supports --• Integration into an supports for VS --
Environment
CCI Lex&YACC
![Page 42: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/42.jpg)
42
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
CCI: текущее состояние и статус
• Реализован почти полностью;не отлажен; не документирован.
• 12 июня 2003 CCI Toolkit был включенв MSDN Academic Alliance.
• Компилятор Zonnon – первый опыт использования CCI за пределами Microsoft.
![Page 43: Компилятор ETH Zonnon для .NET](https://reader035.fdocument.pub/reader035/viewer/2022062800/56814090550346895dac1f76/html5/thumbnails/43.jpg)
43
ННГУ – ИТЛаб – Проект «Исследовательский компилятор»
Анонс
Лабораторная работа«программирование встраиваемых систем»
Compiler ProjectCompiler Project