Демонстрация возможностей Kotlin для создания DSL на примере DSL для сценариев детского робота.
DSL определен в пакете csc.makrobot.dsl
отдельно от основного API.
Реализован DSL для описания и создания робота, позволяющий использовать такой синтаксис:
val робот = робот("Wall-E") {
голова {
пластик толщиной 2
глаза {
лампы {
количество = 2
яркость = 10
}
диоды {
количество = 1
яркость = 3
}
}
рот {
динамик {
мощность = 3
}
}
}
туловище {
металл толщиной 1
надпись {
+"I don't want to survive."
+"I want live."
}
}
руки {
пластик толщиной 3
нагрузка = легкая - средняя
}
шасси = гусеницы шириной 10
}
Другие поддерживаемые варианты для шасси
:
шасси = ноги
шасси = колеса {
диаметр = 4
количество = 2
}
Весь API находится в пакете csc.makrobot.api
.
DSL находится в пакете csc.makrobot.dsl
, см. MakroBotDsl.kt