Skip to content

Latest commit

 

History

History
65 lines (50 loc) · 1.8 KB

README.md

File metadata and controls

65 lines (50 loc) · 1.8 KB

Makrobot DSL

Демонстрация возможностей 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