Предыдущая серия - Отвлечёмся на время от эмуляции объектов. Займёмся мета-моделью и кодогенерацией
Добавил несколько "украшательств".
https://bitbucket.org/lulinalex/mindstream/src/87bd8df93e76bb4d154a75cf9652e8263c251050/Examples/Scripts/CodeGeneration/CodeGen3.ms.script?at=B284
Вот что получилось:
Опять же - имеем некоторую "самодокументируемость" кода.
Такие слова как:
О ней (самодокументируемости) и как её можно использовать - я как-нибудь позже скажу.
"Намекну" пока - "требования и тесты". UseCase, TDD и BDD.
Добавил несколько "украшательств".
https://bitbucket.org/lulinalex/mindstream/src/87bd8df93e76bb4d154a75cf9652e8263c251050/Examples/Scripts/CodeGeneration/CodeGen3.ms.script?at=B284
Вот что получилось:
USES metaMACRO.ms.dict ; Test CodeGen // %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-model-end // --------------------------------------------------------------------------- USES CodeDump.ms.dict // - тут подключаем словарь CodeDump.ms.dict, чтобы "увидеть" слово DumpElement ; @SELF DumpElement // - тут дампим элемент CodeGen и его содержимое // в стандартное устройство вывода. // Чисто для отладки того, что мы сейчас написали. ; // CodeGen CodeGen
Опять же - имеем некоторую "самодокументируемость" кода.
Такие слова как:
%SUMMARY
meta-meta-model-begin
meta-model-begin
О ней (самодокументируемости) и как её можно использовать - я как-нибудь позже скажу.
"Намекну" пока - "требования и тесты". UseCase, TDD и BDD.
Комментариев нет:
Отправить комментарий