Wiki

Clone wiki

MindStream / Articles in English / Description of the meta-model

Original in Russian
The previous series was here – Description of the meta-meta-model.

In that article the meta-meta-model containing ONE element, <<@meta>>, was described.
Now let us describe the meta-model consisting of two elements: UMLCategory and UMLClass.

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

What we get is as follows:

#!delphi 
USES
 metaMACRO.ms.dict
;

Test CodeGen
// is meta information that allows binding the documentation to the code elements. Consequently, the documentation is available from the script engine.
 %SUMMARY '
 'That is where we determine axiomatic of meta-meta model and extract it in a separate dictionary later.
 '
 ; // %SUMMARY

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

meta-meta-model-begin
 'That is where we determine axiomatic of meta-meta model and then separate it
  in a dictionary.
 '

StereotypeStereotypeProducer meta
 %SUMMARY '
 Base element of meta-model determined
 This is the element that allows us to pull the rest by hair out of the swamp
 Other primitives are derived from this one
 '
 ; // %SUMMARY 
; // meta

meta-meta-model-end

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

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

meta-model-begin
 'That is where we determine axiomatic of meta model and then separate it
  in a dictionary.

  Next we will determine the UML concepts 
  https://en.wikipedia.org/wiki/Unified_Modeling_Language

  There are CATEGORIES and CLASSES in it

  Actually, they merely differ from each other, however, let it be so 
  for it was so decided by some wise men

Lets start with them:
  '
<<@meta>> UMLCategory
 %SUMMARY '
 Category on UML
 ' 
 ; // %SUMMARY 
; // UMLCategory

<<@meta>> UMLClass
 %SUMMARY '
 Class on UML
 ' 
 ; // %SUMMARY 
; // UMLClass

meta-model-end

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

USES
 CodeDump.ms.dict
 // - the CodeDump.ms.dict is loaded so we can see the DumpElement word;

@SELF DumpElement
//  - the CodeGen element and its contents are dumped in a standard output device.
//    We only do it to debug what weve written.

; // CodeGen

CodeGen

Updated