Thursday, October 23, 2014

Спецификация(история изменений)

(обновляется. последнее изменение 20.02.2016, добавлена икона БЛОК КОДА )

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

Спецификация визуального языка Дракон-Джас(предварительное название), первый черновой вариант.






Структурной единицей языка является "Сборка"(аналог "Силуэта" в языке Дракон).



Минимальная сборка состоит из икон "Начало сборки", "Начало процедуры", "Конец процедуры", "Конец сборки"


Дракон-Джас является направленным графом.

Правило обхода. Обход совершается сверху вниз и слева направо. 
Правило контура. Все контуры, образуемые ветвлением в иконах "Вопрос" и "Переключатель" должны заканчиваться в соответствующем каждой из икон терминаторе.

  

Если используется икона "Возврат" или "Возврат с результатом" выходящее из неё ребро должно быть пунктирным и серого цвета(#dfdfdf).



Нельзя убирать "лишние" терминаторы. Например для такой схемки:


так делать а-та-та! Будет ошибка.


а так можно. Если просто совместить терминаторы и линии. 

  

Теперь поименно, поиконно.

"Точка сборки"



"Начало сборки"


"Запись в файл"


"Начало процедуры"


"Конец сборки"


"Действие"


"Вопрос"


"Переключатель"


"Вариант"


"Терминатор"



"Код реализации"


"Начало цикла", "Конец цикла"


"Вставка"


"Полка"


"Присвоение функции"


"Вывод"


"Конец процедуры"


"Конец с результатом"


"Возврат"


"Возврат с результатом"


Правила языка Дракон-Джас.


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

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




Часть икон объединены в группы как однотипные, это очень сильно сокращает количество картинок. Наличие группы в правиле означает - "один из группы". Расшифровка групп иконок:













(пока далеко не все)


Из принципа Импровизации следует следующее: выполнение спецификации вовсе не означает буквальное следование ей. Безусловно нужно выполнять только строгие правила, несоблюдение которых, приведет к невозможности что-либо делать. Нарушение строгих правил в спецификации Дракон-Джас приведет к отклонению от идеи заложенной в алгоритме парсера и в результате будет получен неверный результат.

***

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

Нужно писать спецификацию не на язык а на систему Дракон-Джаз в состав которой входит язык Дракон-Джас, как небольшая и не самая важная её часть. Как-то так.


11.10.2014 Выкинул иконы ПОЛКА и ВОЗВРАТ ФУНКЦИИ за полной их ненадобностью и составного характера. Тем более они с успехом заменяются на две иконы ДЕЙСТВИЕ.

12.10.2014 Добавил проверку правил Сборка-1, Сборка-2, Действие. Получились такие своеобразные UnitTests.

Правила


Проверка 


Правило 

Проверка "правила Действие"




  23.04.2014 Добавил новую структура для для Сборки


Соответственно добавляется икона "Часть сборки"


Добавляется соответствующее строгое правило


А ёще нужно модифицировать некоторые старые строгие правила: "Правило Сборки-1"
и "Правило Сборки-2"


Правило Прямоугольников

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

Здесь "Правило Прямоугольников" соблюдается.


а здесь нарушено



20.02.2016

Добавил икону "Блок кода".  Эта икона содержит часть текста с кодом, который напрямую вставляется в выходной файл. 




No comments:

Post a Comment