Ноябрь 2002
Середина 2003
?
3
4
5
Проекции (mappings): отображение специфических свойств Zonnon на семантически эквивалентные структуры .NET
7
8
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 {
private T x_b;
public enum e = (a, b);
public T x {
get { return x_b };
set { x_b = ... }}};
Проекции Zonnon->.NET:
Definitions & Implementations
Zonnon
9
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-классом
Проекция
с базовым классом
10
12
13
14
15
Поддержка интеграции –
Совокупность классов и методов, обеспечивающих интеграцию в среду Visual Studio (дополнительная функцио-нальность для редактирования, отладки, фоновой компиляции etc.)
Преобразователи (“Visitors”) –
Набор классов, реализующих последовательные преобразования
IR ⇒ MSIL
System.Compiler.dll
System.Compiler.Framework.dll
16
Часть дерева наследования IR
17
18
Class
Members
Field
Method
Name
Name
...
Flags
Type
Identifier
Identifier
Int32
Name
Flags
Type
Body
Identifier
Void
Block
...
Statements
Assignment-
Statement
…
…
...
...
Пример: класс C#
19
…выполняя семантические проверки;
…заменяя узлы Identifier ссылками
на сущности, которые обозначает идентификатор;
Каждый Visitor обходит дерево IR…
Можно модифицировать стандартные Visitor’ы и/или
Написать собственные
20
Прототип анализатора:
абстрактный класс CCI
“Унифицированный интерфейс” парсера: реализует интерфейс между компилятором и окружением
Собственная логика Z-парсера
Вызовы
21
Пример расширения Looker’а
Visitor-прототип:
абстрактный класс CCI
Метод-“диспетчер”
Семантическая обработка узла
22
Общая схема работы с IR
Прототип компилятора:
абстрактный класс CCI
Типы узлов IR
Запуск Visitor’ов
23
Имя исход. файла
Пар-ры компиляции
Диагностические
сообщения
Файл с объектным
кодом
Окружение
Компилятор
как “черный ящик”
24
Вывод «содержимого» составного
типа для переменной этого типа
Вывод списка совместно-исполь-
зуемых методов
Вывод списка параметров
Поведение, которое должен поддерживать компилятор
Вычисление выражений
Условные точки останова
Запуск компиляции и сборка
проектов
25
28
Компилировать
посл-ть операторов
. . .
Фаза компляции
Прогр. модули
29
30
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть