DRAKON.SU
https://forum.drakon.su/

Дракон и XML: Проект Ярослава Романченко
https://forum.drakon.su/viewtopic.php?f=143&t=3627
Страница 1 из 2

Автор:  Ярослав Романченко [ Среда, 19 Октябрь, 2011 13:09 ]
Заголовок сообщения:  Дракон и XML: Проект Ярослава Романченко

(модератор) выделено из viewtopic.php?f=62&t=3616
Доп. инф. см.: viewtopic.php?p=66541#p66541


Возможный вариант структуры XML-документа и соответствующая ДРАКОН-схема
Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Drakon:Document>
   <Properties>
      <LastSchemaID>0</LastSchemaID>
   </Properties>
   <Drakon:SchemaPrimitive>
      <Properties>
         <idSchema>0</idSchema>
         <LastElementID>36</LastElementID>
      </Properties>
      <Drakon:ElementHead>
         <Properties>
            <idElement>0</idElement>
            <idR>2</idR>
            <idB>3</idB>
            <X>153</X>
            <Y>66</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>QuickSort</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementHead>
      <Drakon:ElementEnd>
         <Properties>
            <idElement>1</idElement>
            <X>153</X>
            <Y>702</Y>
            <L>-38</L>
            <T>-9</T>
            <R>38</R>
            <B>9</B>
            <Text>End</Text>
         </Properties>
      </Drakon:ElementEnd>
      <Drakon:ElementParameter>
         <Properties>
            <idElement>2</idElement>
            <idL>0</idL>
            <X>324</X>
            <Y>66</Y>
            <L>-76</L>
            <T>-29</T>
            <R>76</R>
            <B>29</B>
            <Code>&quot;(VAR a: ARRAY OF INTEGER;&quot;,&quot;l, r: INTEGER);&quot;,VAR,&quot;  i, j, x, t: INTEGER;&quot;</Code>
         </Properties>
      </Drakon:ElementParameter>
      <Drakon:ElementAction>
         <Properties>
            <idElement>3</idElement>
            <idT>0</idT>
            <idB>4</idB>
            <X>153</X>
            <Y>116</Y>
            <L>-76</L>
            <T>-22</T>
            <R>76</R>
            <B>22</B>
            <Code>&quot;i := l;&quot;,&quot;j := r;&quot;,&quot;x := a[(r+l) DIV 2];&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementAction>
      <Drakon:ElementNode>
         <Properties>
            <idElement>4</idElement>
            <idT>3</idT>
            <idR>5</idR>
            <idB>26</idB>
            <X>153</X>
            <Y>157</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>5</idElement>
            <idL>4</idL>
            <idB>6</idB>
            <X>476</X>
            <Y>157</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>6</idElement>
            <idT>5</idT>
            <X>476</X>
            <Y>479</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementCondition>
         <Properties>
            <idElement>7</idElement>
            <idR>6</idR>
            <idB>8</idB>
            <X>153</X>
            <Y>479</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;i &gt; j&quot;</Code>
            <VacantNodeR>true</VacantNodeR>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementCondition>
      <Drakon:ElementCondition>
         <Properties>
            <idElement>8</idElement>
            <idT>7</idT>
            <idR>9</idR>
            <idB>12</idB>
            <X>153</X>
            <Y>516</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;l &lt; j&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementCondition>
      <Drakon:ElementNode>
         <Properties>
            <idElement>9</idElement>
            <idL>8</idL>
            <idB>10</idB>
            <X>248</X>
            <Y>516</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>10</idElement>
            <idT>9</idT>
            <X>248</X>
            <Y>581</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>11</idElement>
            <idR>10</idR>
            <idB>13</idB>
            <X>153</X>
            <Y>581</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementAction>
         <Properties>
            <idElement>12</idElement>
            <idT>8</idT>
            <idB>11</idB>
            <X>153</X>
            <Y>553</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;QuickSort(a, l, j)&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementAction>
      <Drakon:ElementCondition>
         <Properties>
            <idElement>13</idElement>
            <idT>11</idT>
            <idR>14</idR>
            <idB>17</idB>
            <X>153</X>
            <Y>609</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;i &lt; r&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementCondition>
      <Drakon:ElementNode>
         <Properties>
            <idElement>14</idElement>
            <idL>13</idL>
            <idB>15</idB>
            <X>248</X>
            <Y>609</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>15</idElement>
            <idT>14</idT>
            <X>248</X>
            <Y>674</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>16</idElement>
            <idR>15</idR>
            <idB>1</idB>
            <X>153</X>
            <Y>674</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementAction>
         <Properties>
            <idElement>17</idElement>
            <idT>13</idT>
            <idB>16</idB>
            <X>153</X>
            <Y>646</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;QuickSort(a, i, r)&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementAction>
      <Drakon:ElementCondition>
         <Properties>
            <idElement>18</idElement>
            <idR>19</idR>
            <idB>30</idB>
            <X>153</X>
            <Y>372</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;i &lt;= j&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementCondition>
      <Drakon:ElementNode>
         <Properties>
            <idElement>19</idElement>
            <idL>18</idL>
            <idB>20</idB>
            <X>248</X>
            <Y>372</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>20</idElement>
            <idT>19</idT>
            <X>248</X>
            <Y>451</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>21</idElement>
            <idR>20</idR>
            <idB>7</idB>
            <X>153</X>
            <Y>451</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>22</idElement>
            <idR>23</idR>
            <idB>25</idB>
            <X>153</X>
            <Y>260</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>23</idElement>
            <idL>22</idL>
            <idB>35</idB>
            <X>343</X>
            <Y>260</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>24</idElement>
            <idB>36</idB>
            <X>248</X>
            <Y>288</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementCondition>
         <Properties>
            <idElement>25</idElement>
            <idT>22</idT>
            <idR>24</idR>
            <idB>18</idB>
            <X>153</X>
            <Y>288</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;x &lt; a[j]&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementCondition>
      <Drakon:ElementNode>
         <Properties>
            <idElement>26</idElement>
            <idT>4</idT>
            <idR>27</idR>
            <idB>29</idB>
            <X>153</X>
            <Y>176</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>27</idElement>
            <idL>26</idL>
            <idB>32</idB>
            <X>457</X>
            <Y>176</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>28</idElement>
            <idB>33</idB>
            <X>362</X>
            <Y>204</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementCondition>
         <Properties>
            <idElement>29</idElement>
            <idT>26</idT>
            <idR>28</idR>
            <idB>22</idB>
            <X>153</X>
            <Y>204</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>&quot;a[i] &lt; x&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementCondition>
      <Drakon:ElementAction>
         <Properties>
            <idElement>30</idElement>
            <idT>18</idT>
            <idB>21</idB>
            <X>153</X>
            <Y>416</Y>
            <L>-76</L>
            <T>-16</T>
            <R>76</R>
            <B>16</B>
            <Code>&quot;t := a[i]; a[i] := a[j]; a[j] := t;&quot;,&quot;INC(i); DEC(j)&quot;</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementAction>
      <Drakon:ElementNode>
         <Properties>
            <idElement>31</idElement>
            <idR>32</idR>
            <X>362</X>
            <Y>260</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>32</idElement>
            <idL>31</idL>
            <idT>27</idT>
            <X>457</X>
            <Y>260</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementAction>
         <Properties>
            <idElement>33</idElement>
            <idT>28</idT>
            <idB>31</idB>
            <X>362</X>
            <Y>232</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>INC(i)</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementAction>
      <Drakon:ElementNode>
         <Properties>
            <idElement>34</idElement>
            <idR>35</idR>
            <X>248</X>
            <Y>353</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementNode>
         <Properties>
            <idElement>35</idElement>
            <idL>34</idL>
            <idT>23</idT>
            <X>343</X>
            <Y>353</Y>
            <L>0</L>
            <T>0</T>
            <R>0</R>
            <B>0</B>
         </Properties>
      </Drakon:ElementNode>
      <Drakon:ElementAction>
         <Properties>
            <idElement>36</idElement>
            <idT>24</idT>
            <idB>34</idB>
            <X>248</X>
            <Y>325</Y>
            <L>-76</L>
            <T>-9</T>
            <R>76</R>
            <B>9</B>
            <Code>DEC(j)</Code>
            <VacantNodeB>true</VacantNodeB>
         </Properties>
      </Drakon:ElementAction>
   </Drakon:SchemaPrimitive>
</Drakon:Document>


Вложения:
Комментарий к файлу: Quick sort
Sort.JPG
Sort.JPG [ 73.37 КБ | Просмотров: 23163 ]

Автор:  Ильченко Эдуард [ Среда, 19 Октябрь, 2011 14:27 ]
Заголовок сообщения:  Re: Промежуточный формат

Ярослав Романченко писал(а):
Возможный вариант структуры XML-документа и соответствующая ДРАКОН-схема

Спасибо. Смотрится красивше моего варианта : )
Правда, структура у меня немного другая.
В частности, не нужны позиции икон на экране, не требуется хранить точки ввода.
Но это не суть.

Наверно, буду думать в сторону XML : )

Автор:  Владислав Жаринов [ Среда, 19 Октябрь, 2011 20:17 ]
Заголовок сообщения:  Re: Промежуточный формат

Наверное, этот код сам нуждается в визуализации... :wink:

Автор:  Ярослав Романченко [ Среда, 19 Октябрь, 2011 20:50 ]
Заголовок сообщения:  Re: Промежуточный формат

Ильченко Эдуард писал(а):
В частности, не нужны позиции икон на экране, не требуется хранить точки ввода.
Позиции икон и точки ввода рудименты после трансляции из формата редактора Тышова, от них естественно можно и нужно избавиться :)

Автор:  Пётр Кушнир [ Среда, 19 Октябрь, 2011 21:14 ]
Заголовок сообщения:  Re: Промежуточный формат

а если вспомнить про то, что модель и отображение это разные вещи, то окажется, что алгоритм можно экспортировать (это даже можно назвать компиляцией в "недопсевдоxmlконструкции") с помощью одного неймспейса (набора тегов и их отношений), а аспекты его отображения - с помощью другого.

Автор:  Петр Приклонский [ Четверг, 20 Октябрь, 2011 07:56 ]
Заголовок сообщения:  Re: Промежуточный формат

Ярослав Романченко писал(а):
Позиции икон и точки ввода рудименты после трансляции из формата редактора Тышова ...

Уважаемый Ярослав!
Как я понял, у Вас есть транслятор drt-файлов в XML. Нельзя ли его выложить на форуме ?

Автор:  Валерий Лаптев [ Четверг, 20 Октябрь, 2011 08:33 ]
Заголовок сообщения:  Re: Промежуточный формат

Madzi писал(а):
А зачем городить очередной велосипед? Чем вас XML не устраивает. Он для того и разрабатывался, чтобы быть расширяемым и восприниматься как "расширенным", так и "бедным" потребителем. Просто некоторые теги будут проигнорированы. Например, комментарии или код.

Более того! Насколько мне известно, системы проектирования (вроде Architect Enerprise) экспортируют нарисованную схему в стандарте XMI. Поэтому экспортированная схема без труда импортируется в другой системе.
Наши студни писали на эту тему курсовые и дипломные, так что инфа - не с потолка. Инфу без труда можно найти в инете.

Автор:  Ильченко Эдуард [ Четверг, 20 Октябрь, 2011 09:27 ]
Заголовок сообщения:  Re: Промежуточный формат

Валерий Лаптев писал(а):
Более того! Насколько мне известно, системы проектирования (вроде Architect Enerprise) экспортируют нарисованную схему в стандарте XMI. Поэтому экспортированная схема без труда импортируется в другой системе.

А есть ли описание формата в открытом доступе?
Было бы неплохо, хотя бы графику дракона переносить в другие программы.

Автор:  Валерий Лаптев [ Четверг, 20 Октябрь, 2011 09:37 ]
Заголовок сообщения:  Re: Промежуточный формат

Ильченко Эдуард писал(а):
Валерий Лаптев писал(а):
Более того! Насколько мне известно, системы проектирования (вроде Architect Enerprise) экспортируют нарисованную схему в стандарте XMI. Поэтому экспортированная схема без труда импортируется в другой системе.

А есть ли описание формата в открытом доступе?
Было бы неплохо, хотя бы графику дракона переносить в другие программы.

http://ru.wikipedia.org/wiki/XMI
http://www.omg.org/spec/
Далее: http://www.omg.org/spec/XMI/
Далее: http://www.omg.org/spec/XMI/2.1.1/
Там pdf

Автор:  Ильченко Эдуард [ Четверг, 20 Октябрь, 2011 11:17 ]
Заголовок сообщения:  Re: Промежуточный формат

Спасибо!

Автор:  Ярослав Романченко [ Четверг, 20 Октябрь, 2011 14:41 ]
Заголовок сообщения:  Re: Промежуточный формат

Петр Приклонский писал(а):
Как я понял, у Вас есть транслятор drt-файлов в XML. Нельзя ли его выложить на форуме ?
Есть, можно забрать его прямо из SVN репозитория http://svn.assembla.com/svn/oberonru/tr ... ts/DRAKON/
или принять участие в дальнейшем его развитии если есть желание. Развитие предполагается в сторону от имеющегося конвертора к полноценному редактору с возможностями генерации кода во множество языков программирования :wink:

PS. Транслятор работает под ОС A2/WinAos/UnixAos
файлы:
Drakon.rep - репозиторий объектов для реализации концепции создания экземпляров объектов по имени средствами ОС A2
DrakonComponents.Mod - модуль с реализациями всех объектов необходимых для чтения ДРАКОН-документов из формата XML
DrakonDocuments.tar - архив с примерами исходных drt-файлов и соответствующих сконвертированных из них XML-файлов
DrakonUtils.Mod - модуль реализующий пользовательские команды для осуществления конвертации.

Автор:  Петр Приклонский [ Четверг, 20 Октябрь, 2011 14:50 ]
Заголовок сообщения:  Re: Промежуточный формат

Спасибо!

Автор:  Владимир Паронджанов [ Четверг, 27 Октябрь, 2011 17:13 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Четыре важных инициативы Ярослава Романченко

Инициатива первая: Открытие темы
«Визуальный язык программирования «Дракон»»
на сайте OberonCore.ru

viewtopic.php?f=62&t=493

Это историческое событие произошло 31 мая 2007 года.
Вспоминая об этом, Ярослав пишет:
Цитата:
Не наткнись я совершенно случайно в своё время на ДРАКОН, о нём бы здесь до сих пор может никто и не знал-бы
viewtopic.php?p=63105#p63105

Открытая им тема спустя четыре года разрослась в обширный раздел, насчитывающий свыше 200 тем.
Это значит, что Ярослав Романченко – «крестный отец» Дракона.

Вторая инициатива Ярослава -- создание Генератора Дракон => Active Oberon , или Транслятора схем Дракона в код языка Active Oberon
Это произошло 15 июля 2008 года
viewtopic.php?f=79&t=1080

Ссылка на этот генератор дана в двух разделах Википедии: русском и английском -- в статье ДРАКОН (алгоритмический язык) и DRAKON

Цитата:
DRAKON + Oberon = DRON visual programming language (in English)

Цитата:
Романченко Я.М. D2O (Deuterium Oxide) Транслятор схем Дракона в код языка Active Oberon

Третья инициатива – создание новой редакции Транслятора в июне 2011 года: Опубликован генератор D2O версии 0.3 от 14.06.2011
viewtopic.php?p=63689#p63689

И, наконец, четвертая инициатива Ярослава – это масштабный проект «Дракон и XML».
viewtopic.php?f=79&t=3627

Суть вопроса Ярослав поясняет так:
Цитата:
Развитие предполагается в сторону от имеющегося конвертора к полноценному редактору с возможностями генерации кода во множество языков программирования
Обратите внимание: "во множество языков прграммирования".

Уважаемый Ярослав Михайлович!

Огромное Вам спасибо за Ваши творческие и чрезвычайно важные инициативы,
за Ваш вдохновенный и упорный труд!

Автор:  ==== [ Четверг, 27 Октябрь, 2011 19:04 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Ярослав

Можете рассказать о практическом использовании транслятора ДРОН вами или другими пользователями.

В чем вы видите необходимость перехода к применению формата XML, какая цель достигается. Я полагаю, что формат drt является наиболее компактным.

Автор:  Ярослав Романченко [ Четверг, 27 Октябрь, 2011 22:55 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Геннадий Тышов писал(а):
Можете рассказать о практическом использовании транслятора ДРОН вами или другими пользователями.
А какое практическое использование у компилятора компонентного паскаля или оберона?
ДРОН практически готовый инструмент, выдающий работоспособный программный код. Я использовал его для создания серверной части UDP-чата на подмножестве протокола ICQ. Готовая подсистема включена в дистрибутив операционной системы A2. О практическом использовании транслятора кем либо ещё я не слышал. Думаю, по большей части по-тому, что интерес к самой операционной системе А2 достаточно низок.
Геннадий Тышов писал(а):
В чем вы видите необходимость перехода к применению формата XML, какая цель достигается. Я полагаю, что формат drt является наиболее компактным.
Может формат drt и компактнее, но это не самое главное качество требуемое от формата. Формат drt неудобен прежде всего тем, что крайне тяжело обеспечивать обратную совместимость форматов разных версий. Вы, например, меняли местами идентификаторы элементов, и в формате drt это выражалось в изменении числовых кодов элементов. Это вызывает трудности с поддержкой версий.
Следующий недостаток состоит в том, что формат drt различает параметры элементов просто позицией некоего числа в сплошном потоке данных. Нужно писать замысловатый программный код для формирования файла drt и замысловатый же программный код для разбора файла drt при чтении. Опять-же для поддержки разных версий нужно держать несколько вариантов такого программного кода для каждой версии.

XML даёт то преимущество, что в первом случае вместо числовых кодов необходимо оперировать закреплёнными буквенными именами для каждого элемента. Добавление новых типов элементов не ломает функциональность существующего работающего кода.
Во втором случае имеем возможность чтения данных практически без написания кода!!! Парсер XML сам при чтении создаёт экземпляры элементов по буквенному имени, и инициализирует их параметры прочитанными значениями.
Формат XML легко конвертировать в форматы практически любых других программных продуктов также основанные на XML. В обсуждении уже прозвучало, что возможна даже генерация программного кода с помощью преобразований пространств имён XML документов.

Автор:  Дмитрий Маслов [ Пятница, 28 Октябрь, 2011 08:17 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Ярослав Романченко писал(а):
Думаю, по большей части по-тому, что интерес к самой операционной системе А2 достаточно низок.

Ярослав, у меня интерес к А2 достаточно высок, но он несколько критический и практический.
Если я мог бы просто взять и использовать А2 для своих нужд, было бы просто замечательно.
Когда я разберусь со своими железками, возможно, я для домашних нужд буду использовать А2.
НО!
Для работы мне очень нужны инструменты для процессоров ARM. В данный момент я использую компилятор от Astrobe Oberon-7. Понять что лучше Oberon-7 или Active Oberon я пока не могу. Но Active Oberon для АРМов я не видел и не слышал о таком. В ЕТН для АРМов разработали Minos, но кроме сообщений об этом я ничего не нашёл. Может, плохо искал. В общем у меня есть "рабочие" и "домашние" задачи, которые мне было бы легче решать имея ОС типа А2 для АРМов, но что-то пока не понятно как это получить без лишнего героизма. Я готов выслушать любые советы.

Автор:  Madzi [ Пятница, 28 Октябрь, 2011 08:54 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Насколько мне не изменяет память в поставку входят:
PCAARM.Mod
PCGARM.Mod
PCOARM.Mod
т.е. кодогенератор под АРМ присутствует.
Не вижу причин не использовать его?
А также, помнится, что BohdanT писал Oberon07 под АРМ на A2.

Автор:  Дмитрий Маслов [ Пятница, 28 Октябрь, 2011 09:18 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Madzi писал(а):
Насколько мне не изменяет память в поставку входят:
PCAARM.Mod
PCGARM.Mod
PCOARM.Mod
т.е. кодогенератор под АРМ присутствует.
Не вижу причин не использовать его?
А также, помнится, что BohdanT писал Oberon07 под АРМ на A2.

Ух ты! Спасибо.

Автор:  Владислав Жаринов [ Пятница, 28 Октябрь, 2011 11:30 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Владимир Паронджанов писал(а):
...
И, наконец, четвертая инициатива Ярослава – это масштабный проект «Дракон и XML».
viewtopic.php?f=79&t=3627

Суть вопроса Ярослав поясняет так:
Цитата:
Развитие предполагается в сторону от имеющегося конвертора к полноценному редактору с возможностями генерации кода во множество языков программирования
Обратите внимание: "во множество языков прграммирования".
...
Ну правильно... :) Потому что Ярослав сначала определит точный гибрид каждого языка множества с дракон-схемой. Как он это сделал для Активного Оберона. И поскольку язык описания типов в пару к техноязыку определён не был (как и язык описания структуры АО-программы) - реализовал декларацию и структуризацию в комментариях... Оговорившись, что типы можно визуализировать как "дерево каталогов", содержимое узлов которого представлено таблично. Видимо, эта мысль будет реализована в новом проекте?.. А как предполагается показать структуру программы (модули или их АО-эквивалент)?..

Автор:  Madzi [ Воскресенье, 30 Октябрь, 2011 14:07 ]
Заголовок сообщения:  Re: Дракон и XML: Проект Ярослава Романченко

Я думаю, что подойти нужно немножко иначе. Определить XML множество для дракона и XML множество для абстрактной программы, так как они несколько отличаются и предназначением и содержанием. Затем обеспечить возможность преобразования одного формата в другой, а там уже кодогенерацию и т.д.

В качестве прототипа абстрактной программы можно выбрать модуль оберона:
Код:
<module name="Имя модуля>
  <imports>
    <import alias="sys" name="SYSTEM"/>
  </imports>

  <consts>
    <const name="Pi">3.1415926</const>
    <const name="String">Some string</const>
  </consts>

  <types>
    <type name="newInt" base="int"/>
  </types>

  <vars>
    <variable name="var1" type="newInt"/>
  </vars>

  <body>
    <for index="var1" from="0" to="10" step="1">
        <assign name="var1">var1</assign>
    </for>
  </body>
</module>

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/