четверг, 20 августа 2015 г.

#1109. Описываем мета-модель

Предыдущая серия была тут - Описываем мета-мета-модель.

Там мы описали мета-мета-модель из ОДНОГО элемента - <<@meta>>.

Теперь опишем мета-модель.

Из двух элементов - UMLCategory и UMLClass.

https://bitbucket.org/lulinalex/mindstream/src/1938252ed6bebe61707a18a3c3033a1bc0647d2d/Examples/Scripts/CodeGeneration/CodeGen5.ms.script?at=B284

Вот что получается:

USES
 metaMACRO.ms.dict
;

Test CodeGen
 // %SUMMARY это мета-информация, которая позволяет привязывать документацию
 // к элементам кода. Эта документация доступна потом из скриптовой машины.
 %SUMMARY '
 Тут будем тестировать построение сначала мета-модели, потом модели, а потом и
 кодогенерации
 '
 ; // %SUMMARY

// ---------------------------------------------------------------------------

meta-meta-model-begin
 'Тут будем определять аксиоматику мета-мета-модели, а потом вынесем её 
  в отдельный словарь.
 '

StereotypeStereotypeProducer meta
 %SUMMARY '
 Определяем базовый элемент мета-модели
 Тот самый который позволяет тащить всё остальное "за волосы из болота"
 Через этот примитив выводятся все остальные
 '
 ; // %SUMMARY 
; // meta

meta-meta-model-end

// ---------------------------------------------------------------------------

// ---------------------------------------------------------------------------

meta-model-begin
 'Тут будем определять аксиоматику мета-модели, а потом вынесем её 
  в отдельный словарь.

  Дальше будем определять понятия из UML - https://ru.wikipedia.org/wiki/UML

  Там бывают КАТЕГОРИИ и КЛАССЫ (Category и Class)

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

  Вот с них и начнём:
  '
<<@meta>> UMLCategory
 %SUMMARY '
 Категория в терминах UML
 ' 
 ; // %SUMMARY 
; // UMLCategory

<<@meta>> UMLClass
 %SUMMARY '
 Класс в терминах UML
 ' 
 ; // %SUMMARY 
; // UMLClass

meta-model-end

// ---------------------------------------------------------------------------

USES
 CodeDump.ms.dict
 // - тут подключаем словарь CodeDump.ms.dict, чтобы "увидеть" слово DumpElement
;

@SELF DumpElement
// - тут дампим элемент CodeGen и его содержимое
//   в стандартное устройство вывода.
//   Чисто для отладки того, что мы сейчас написали.

; // CodeGen

CodeGen

Комментариев нет:

Отправить комментарий