DOT DSL

DOT DSL

Середня

Вказівки

Предметно-орієнтована мова (DSL) - це невелика мова, оптимізована для конкретної предметної області. Оскільки DSL має конкретне призначення, вона може суттєво підвищити продуктивність і полегшити розуміння, дозволяючи авторові оголосити що він хоче, а не як.

Однією з проблемних областей, де їх застосовують, є складні налаштування та конфігурації.

Наприклад, мова DOT дозволяє записати текстовий опис графа, який потім перетворює на зображення один з інструментів Graphviz (наприклад, dot). Простий граф має такий вигляд:

graph {
    graph [bgcolor="yellow"]
    a [color="red"]
    b [color="blue"]
    a -- b [color="green"]
}

Якщо помістити це у файл example.dot і виконати dot example.dot -T png -o example.png, отримаємо зображення example.png, де червоний і синій кружечки зʼєднані зеленою лінією на жовтому тлі.

Напишіть предметно-орієнтовану мову, подібну до мови dot від Graphviz.

Наша DSL подібна до мови dot від Graphviz тим, що нашу DSL будемо використовувати для створення структур даних графів. Однак, на відміну від мови DOT, наша DSL буде внутрішньою DSL, призначеною лише для використання в нашій мові.

Дізнаймося більше про різницю між внутрішніми та зовнішніми DSL.

Патерн «будівельник»

У цій вправі ми побудуємо кілька struct, використовуючи builder pattern. Стисло кажучи, цей патерн дозволяє нам розділити функцію конструювання нашого struct, яка містить багато аргументів, на кілька окремих функцій. Цей підхід дає нам змогу робити конструювання й налаштування struct компактним, але дуже гнучким. Докладніше про це можна прочитати на наступній сторінці.


Джерело

WikipediaПосилання відкривається в новому вікні або вкладці
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Rust Exercism

Час розпочати DOT DSL?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Rust, а також 99 вправ та справжнє наставництво від людей, і все це безкоштовно.