DRAKON.SU

Текущее время: Среда, 16 Июнь, 2021 20:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 13 Март, 2014 15:04 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
http://online.rae.ru/sciences/4/year-2014
Приложение к журналу
«Современные проблемы науки и образования»
ISSN - 1817-6321



http://online.rae.ru/pdf/1761

Цитата:
Технические науки 7

Трансляция ДРАКОН-схем в программный код С++
Григорьев М.В., Ткаченко И.Н.

Тюменский государственный университет


ДРАКОН – графический алгоритмический язык программирования, в котором используются два типа элементов: графические фигуры (иконы) и текстовые надписи [1]. Поэтому язык ДРАКОН имеет не один, а два синтаксиса: графический и текстовый. Графический синтаксис охватывает алфавит икон, правила их размещения в поле чертежа и правила связи икон с помощью соединительных линий. Текстовый синтаксис же зависит от синтаксиса целевого языка программирования. Целевым языком является любой язык программирования, команды которого размещаются в графических фигурах.

Проектирование программ до последнего момента может вестись независимо от языка и лишь на последнем этапе осуществляется переход к нужному языку. Разнообразие текстовых правил (то есть возможность выбора любого текстового синтаксиса) определяет гибкость ДРАКОНа и лёгкую настройку на различные предметные и иные области.

Построение схемы всегда начинается со «свободного» элемента, он исполняет роль тела функции, остальные элементы добавляются к нему. Нужно считать, что все элементы, находящиеся в свободном элементе после трансляции будут находиться в одной функции.

Таких элементов всего два: «примитив» и «силуэт» в формальной грамматике они представлены соответствующими нетерминалами. «Зависимые» элементы представлены терминалами.[2] При создании схемы происходит комбинирование «свободных» и «зависимых» элементов.

Сопоставив формальные грамматики графического языка программирования (моделирования) и текстового языка программирования получим алгоритм трансляции ДРАКОН-схем в программный код С++. [3]

Схему не всегда можно транслировать на язык высокого уровня, т.к. возможны случаи, когда формальная грамматика нотации более свободна, нежели формальная грамматика языка программирования. Поэтому полное транслирование схемы, верной с точки зрения нотации, возможно только на низкоуровневый язык.

Трансляция схемы, так же как и построение, начинается со «свободного» элемента. Метод принимает указатель на элемент, после чего идёт часть общая для всех «свободных» элементов. Каждый из них, имеет заголовок, текст которого выводится в файл, за заголовком идёт открывающая круглая скобка. Если к заголовку присоединён «опциональный» элемент «список формальных параметров, то транслируется и он, в любом случае в конце идёт закрывающая скобка. Затем алгоритм трансляции отличается в зависимости от такого, какой тип «свободного» элемента использовал пользователь. Для трансляции каждого из них существует своя процедура, результаты выполнения этой процедуры заключаются в фигурные скобки.

Рассматривать трансляцию свободных элементов будем от простого к сложному, поэтому начнём с «примитива». Поскольку «примитив» может содержать указатели на «зависимые» элементы» то мы можем получить указатель на первый элемент, и последовательно перебрать все элементы списка для каждого из них вызывая процедуру трансляции.

«Силуэт» не имеет указателей на список «зависимых» элементов, зато он имеет указатели на список «веток», а те в свою очередь, на список зависимых элементов. Поэтому при трансляции «силуэта» обходятся все «ветки», при обходе каждой из них, обходятся зависимые элементы.

При трансляции следует учитывать необходимо ли для текущей ветки использовать метку и если существует обращение к «ветке» с нарушением последовательности, то для ветки используется метка. В свою очередь «ветка» сама может ссылаться на другую «ветку» с помощью иконы «адрес» если ссылка происходит с нарушением порядка, то используется оператор “goto”.

К каждому зависимому элементу можно присоединить «опциональный» элемент – «синхронизатор», именно трансляция синхронизатора является общей для всех «зависимых» элементов. После, в зависимости от типа транслируемого элемента, вызываются процедуры трансляции для следующих типов: действие, ввод, вывод, вставка, полка, вопрос, метка, начало цикла ДЛЯ, конец цикла ДЛЯ, выбор, пауза, таймер.

Полученные правила, и алгоритм трансляции позволяют создать транслятор с языка ДРАКОН на язык Си, независимо от среды разработки.

Список литературы:
1. Описание визуального синтаксиса языка ДРАКОН [Электронный ресурс]
// Сайт про язык ДРАКОН URL: http://drakon.su/jazyk/vizualnyj_sintaksis. (Дата обращения: 02.06.2013).
2. Гладкий А. В. Формальные грамматики и языки. — М.: Наука, 1973
3. Бьерн Страуструп. Язык программирования С++. – Издательства: Бином, Невский Диалект, 2008 г. – 1104 с.:ил. ISBN 5-7989-0226-2

СОВРЕМЕННЫЕ ПРОБЛЕМЫ НАУКИ И ОБРАЗОВАНИЯ №6, 2014


Содержание статьи далекое от практической реализации в ИС Дракон.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2021, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB