Похожие презентации:
Структура компилятора PascalABC.NET
1.
Структура компилятора PascalABC.NETКонсольная
оболочка
Управляющий блок
Визуальная
оболочка
Compiler.dll
PABCNETC.exe
Алгоритм
компиляции
модулей
Синтаксическое
дерево
Семантическое
дерево
SemanticTree.dll
SyntaxTree.dll
Контроллер
парсеров
Parsers.dll
Oberon2
Конвертор синтаксического
дерева в семантическое
TreeConverter.dll
CodeGen.dll
.NET
dotNETGen.dll
Интерфейс ТС
PascalABCParser.dll
WIN32
Win32Gen.dll
Таблица
символов(ТС)
Ткачук А.
группа 4.1
Контроллер
генераторов кода
Конвертор
Oberon2Parser.dll
PascalABC.NET
PascalABC.exe
Контроль
ошибок
Водолазов Н.
магистр 1 год
доступ
к .NET
Бондарев И.
магистр 1 год
2.
Синтаксическое дерево программы161 класс на языке C#
for i:=0 to 10 do begin
writeln(i);
for_node
z:=z+1;
cycle_type==to
end;
loop_variable init_value
finish_value
body
ident
name==i
int_const
value==0
int_const
value==0
statement_list
procedure_call
deref_value
ident
name==writeln
assign
parametrs
expression_list
to
from
ident
name==z
bin_expr
oper==plus
left
ident
name==i
ident
name==z
right
int_const
value==1
3. GOLD Parser Builder Grammar Oriented Language Developer. http://www.devincook.com/GOLDParser/
поддерживаемые языкиGOLD Parser Builder
Grammar Oriented Language Developer.
http://www.devincook.com/GOLDParser/
Pascal
Java
Python
Visual Basic
All .NET languages
ANSI C
C#
C++
Delphi
Особенности языка PascalABC.NET
• Модули могут быть описаны без ключевых слов interface
implementation
• Тела методов могут быть описаны как в классе так и вне класса
• В языке принята структурная эквивалентность типов, поэтому
типы можно описывать в заголовках методов и объявлениях
переменных
• Добавлено ключевое слово using позволяющее подключать
пространства имен из .NET
• Добавлена возможность перегрузки всех операторов
• Убраны ключевые слова message и низкоуровневые конструкции
такие как absolute
4.
Структура таблицы символов “динамическая хеш таблица динамических массивов”Словарь:
динамическая хеш
таблица строк
Таблица
областей
видимости:
динамический
массив
0 0
1
2
3
k
Строка
(имя идентификатора)
Области видимости:
динамический массив
с бинарным поиском
5.
Результат работыРезультатами моей работы являются:
• Создание иерархии классов синтаксического дерева.
• Модификация процесса создания парсеров в системе
GOLDParserBuilder
• Генерация синтаксического дерева по коду программ
написанных на языках PascalABC.NET и Oberon2.
• Адаптация грамматики языка Delphi7 под язык
PascalABC.NET
• Модификация таблицы символов компилятора для
проекта PascalABC.NET
• Алгоритмы поиска в таблице символов
• Алгоритм компиляции модулей в стиле Delphi