Содержание
- 2. Что это такое DSL? Предметно-ориентированный язык (Domain Specific Language) – это язык программирования ограниченной выразительности, фокусирующийся
- 3. Пример программы на DSL Set camera size: 400 by 300 pixels. Set camera position: 100, 100.
- 4. Пример программы на DSL Computer: processor: cores -- 2 type -- i386 disk: size -- 75
- 5. Семантическая модель Представление языка 26
- 6. DSL и eDSL Внешний DSL Реализуется средствами создания ЯП. Произвольный синтаксис. Чужой по отношению к основному
- 7. eDSL средствами java и ruby computer() .processor() .cores(2) .speed(2500) .i386() .disk() .size(150) .disk() .size(75) .speed(7200) .sata()
- 8. Другой пример DSL на ruby [:computer, [:processor, [:cores, 2], [:type, :i386]], [:disk, [:size, 75], [:speed, 7200],
- 9. Как добавить сюда управляющие конструкции? computer() . . . .disk() .size(75) .speed(7200) .sata() .end(); [:computer, .
- 10. Как добавить сюда управляющие конструкции? computer() . . . .times(2) .disk() .size(75) .speed(7200) .sata() .end_times() .end();
- 11. Мы, программисты, представляем себя волшебниками, повелителями кода 20
- 12. A + B * C A + * B C Дерево разбора выражения 19
- 13. A + B * C A + * B C Дерево разбора выражения ( ( )
- 14. A + B * C A + * B C Дерево разбора выражения ( ( )
- 15. Computer: processor: cores -- 2 type -- i386 (Computer (processor (cores 2) (type i386))) c =
- 16. 15
- 17. Unless == not if (unless (= a b) (do something)) (if (not (= a b) (do
- 18. Unless == not if (defmacro unless [cond body] `(if (not ~cond) ~body)) Шаблон: unless Параметры: cond,
- 19. Порядок выполнения функций и макросов 12 Компиляция Макросы Исполнение Функции
- 20. Инфиксная нотация 11 (defmacro infix [arg1 op arg2] (list op arg1 arg2)) (infix 2 + 5)
- 21. (for (i = 0, i (defmacro for [args & body] (let [a1 (nth args 0) a2
- 22. I’ll be back! 09
- 23. Анафорический макрос (defmacro not-nil ([expr then & else] (let [result (symbol "result")] `(let [~result ~expr] (if
- 24. В C# 4.0 мы добавили новую фантастическую возможность: бла-бла-бла! Программисты C# 07
- 25. Пример М.Фаулера SVCLFOWLER 10101MS0120050313 SVCLHOHPE 10201DX0320050315 SVCLTWO x10301MRP220050329 USGE103 x50214..7050329 Как все это распарсить? 06
- 26. Разные типы – разные поля SVCLFOWLER 4-18: CustomerName 19-23: CustomerID 24-27 : CallTypeCode 28-35 : DateOfCallString
- 27. Расставим скобочки… (def-reader SVCLFOWLER [4 18 CustomerName] [19 23 CustomerID] [24 27 CallTypeCode] [28 35 DateOfCallString])
- 28. (defmacro def-reader [class-name & fields] (let [method-names (map #(vector (symbol (nth % 2)) '[] 'String) fields)
- 29. (def-reader fowler.core.ThirdClass [2 7 field1] [9 15 field2] [17 20 field3]) 02
- 30. Почувствуй силу!.. 01
- 32. Скачать презентацию