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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



(edittext, filename);(i < 1 || filename.ToString() == "");.ExecuteAction(.OpenFile,.ToString());

}

3. Посмотреть результаты:

public void ExecuteB_R()

{();

}

Заключение

Работа над проектом PascalABC.NET началась в сентябре 2005 года. Одной из наиболее сложных задач было распараллеливание проекта на относительно независимые части, для того чтобы разработчики могли работать над проектом независимо. Проект был разделен на следующие независимые части:

синтаксическое дерево;

синтаксический анализатор;

семантическое дерево;

конвертор синтаксического дерева в семантическое дерево;

генератор кода.

Центральной идеей, позволившей улучшить и ускорить разработку, стало разделение дерева программы на синтаксическое и семантическое деревья.

Настоящий текст содержит описание той работы, которая была проделана непосредственно автором: от синтаксического анализа до генерации кода. Наиболее важными и сложными частями компилятора, разработанными автором, являются:

грамматика языка PascalABC.NET;

синтаксическое дерево и синтаксический анализатор;

таблица символов и таблица пространств имен, алгоритмы поиска имен в таблице символов;

управляющий блок;

алгоритм компиляции модулей, учитывающий наличие промежуточного представления PCU;

реализация типизированных файлов;

концепция реализации изменяемых строк;

система локализации.

Итогом совместной работы ниже перечисленных студентов (5 человек) над проектом является система программирования PascalABC.NET, включающая язык PascalABC.NET и компилятор с этого языка и предназначенная для начального обучения современному программированию.

В проекте участвовали следующие разработчики:

Бондарев Иван, магистр 2 года мехмата РГУ. Генератор IL кода, PCU файлы. Работал над проектом до весны 2006 года.

Водолазов Николай, магистр 2 года мехмата ЮФУ. Семантическое дерево и семантический анализ, генерация кода.

Иванов Сергей, магистр 1 года мехмата ЮФУ. Работает в проекте, начиная с февраля 2007 года. Занимается введением в язык управляемых и неуправляемых шаблонов. С апреля 2007: семантическое дерево и семантический анализ, генерация кода.

Ткачук Александр, 5 курс мехмата ЮФУ. Синтаксическое дерево и синтаксический анализатор. Таблица символов. Управляющий блок. Плагины. С апреля 2007: Семантическое дерево и семантический анализ, генерация кода.

Харитонова Любовь, 4 курс мехмата ЮФУ. Занимается разработкой визуальной оболочки для компилятора. Работает в проекте с сентября 2006 года.

Исходный код проекта состоит из 220 файлов (4,6 мегабайт, 145000 строк).

По результатам работы опубликовано 4 статьи и в 2006-2007 гг. проведено 2 семинара: для преподавателей и для студентов, а также сделан доклад на семинаре Штейнберга Б.Я. Кроме того, в 2007 году Михалковичем С.С. и Ткачуком А.В. был создан сайт проекта [12].

Литература

1.Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструменты.: Пер. с англ. - М.: Издательский дом Вильямс, 2001, 768 с.

2.Водолазов Н.Н., Михалкович С.С., Ткачук А.В. Архитектура компилятора PascalABC.NET. Труды IV Всероссийской научно-технической конференции Технологии Microsoft в теории и практике программирования. 2007 г., с 181-182.

.Бондарев И.В., Водолазов Н.Н., Михалкович С.С., Ткачук А.В. Некоторые вопросы реализации компилятора языка программирования PascalABC.NET. Всероссийская школа-семинар Математическое моделирование, биомеханика и информационные технологии в современном университете. 2006. Тезисы докладов. с.10-11.

.Водолазов Н.Н., Михалкович С.С., Ткачук А.В. Преимущества использования компилятора PascalABC.NET в учебном процессе. Всероссийская школа-семинар "Математическое моделирование, биомеханика и информационные технологии в современном университете". 2007. Тезисы докладов.

.Водолазов Н.Н., Михалкович С.С., Ткачук А.В. Опыт разработки учебного языка программирования для платформы .NET. Современные информационные технологии в образовании: Южный Федеральный округ Научно-методическая конференция 2007. Тезисы докладов.

.Э.Гамма, Р. Хелм, Р. Джонсон, Дж. "иссидес. Приемы объектно-ориентированного проектирования (паттерны проектирования). Питер, 2001, 368 с.

7.

8.Ткачук А.В. Доклад Реализация таблицы символов компилятора, науч. рук. Михалкович С.С.

9.Роберт Седжвик. Фундаментальные алгоритмы на С++. Части 1-4. М., Диасофт, 2002. 496 с.

10.Common Language Infrastructure Standards.

11.Абрамян М.Э. Электронный задачник Programming Taskbook: опыт разработки и применения. II Международная научно-практическая конференция Современные информационные технологии и ИТ-образование. Сборник трудов. Москва, 2006 г., с.194-199.

.Сайт проекта PаscalABC.NET -

pascalabc компилятор модуль семантический

ПРИЛОЖЕНИЕ 1. Грамматика языка PascalABC.NET

"Start Symbol" =

{Ident Letter}= {Letter} + [_]

{All ASCII}= {#1..#256}+{Cyrillic}+{#8100..#8800}

{TextPart}= {All ASCII} - {Control Codes}

{String Char}= {TextPart} - ['']

{CommentPartSlashes}= {All ASCII} - {LF}

{CommentPart1}= {All ASCII} - [}]

{CommentPart2}= {All ASCII}

{Hex Digit}= {Number} + [abcdefABCDEF]= ({Whitespace}+ | (('//' {CommentPartSlashes}* {LF}) | ('{' {CommentPart1}* '}' )))= ({Number}+'.'{Number}+) | (({Number}+'.')? {Number}+ [eE] [+-]? {Number}+)= ('&')? {Ident Letter} ({Ident Letter}|{Number})*= {Number}+= '$'{Hex Digit}+= '#'{Number}+= ''({String Char}|'''')*''= '#'{Ident Letter} ({Ident Letter}|{Number})*= '@'= ','= ':'= '^'= '..'= '.'= '('= ')'= ';'= '['= ']'= ':='= '+='= '-='= '*='= '/='

tkMinus = '-'= '+'

tkSlash = '/'= '*'= '='= '>'= '>='= ''

! Reserved != 'or'= 'xor'= 'and'= 'div'= 'mod'= 'shl'= 'shr'= 'not'= 'as'= 'in'= 'is'= 'sizeof'= 'typeof'= 'wher