Все DSL ...
Ассемблер: MOV от R1 до R2
Компиляторы: Операторы присваивания - A = A + 1, Условные выражения - IF (TRUE) ..., Branch - RETURN
HTML: ... описывают вложенную структуру
TCP / IP: описывают к / от адреса
PDF: описание размещения текста / изображения на бумаге
Шрифты: описание символов
Любой язык, который мы используем для описания конкретного процесса, - это DSL. К сожалению, не хватает языков, специфичных для предметной области, для описания даже самых основных процессов, поэтому мы используем несколько языков, которые у нас есть, для описания всего, что мы делаем. «Заархивировать все html-файлы на моем веб-сайте» требует для заполнения 300 строк на 3 или 4 разных языках.
Чтобы построить DSL, определите минимальное количество символов, необходимых для описания процесса, который вы можете запомнить и который не требует документации. Помните, что скорость и простота использования - главные критерии дизайна. Синтаксический анализ настолько быстр, что любой синтаксис, который вы используете, в порядке, в большинстве случаев я предпочитаю естественный язык в качестве синтаксиса: «Оплата работникам в первое число месяца», но для конкретного домена вы определяете синтаксис, который лучше всего соответствует проблеме.
Я бы не стал использовать другие решения, которые могут быть удобными, но не подходят для данной проблемы, например HTML, который использовался для определения данных (XML). CSV очень полезен, он подходит для большинства задач. JSON не подходит для простоты использования, это излишество, которое добавляет ненужных сложностей, когда CSV работает для большинства проблем. Мы часто используем EXCEL для DSL, он отлично подходит для описания небольших проблем, от 65 тыс. До 1 млн строк, таких как древовидные структуры или меню, столбец A - уровень, другие столбцы - значки, цвета, метки и т. Д. (EXCEL - это редактируемый CSV).
Я обнаружил, что HTML на самом деле не решает проблему макета страницы, поэтому я избавился от него и определил DSL, который мне подходит. Я определил 6 областей на странице: ЗАГОЛОВОК, ТЕЛО, ФУТЕР, ЛЕВОЕ / ПРАВОЕ ПОЛЯ и ЛЕВОЕ / ПРАВОЕ ПОЛНОЕ ПОЛЯ. Затем я мог бы сказать генератору страниц добавить СТРОКУ НАЗВАНИЯ, СТРОКУ СОСТОЯНИЯ, МЕНЮ, ТАБЛИЦУ, ФОРМЫ, ... в определенные ячейки. Каждая из этих ячеек может быть разделена на строки и столбцы любой глубины. Макет страницы занимает секунды для любого стиля.
BODY содержит таблицу моих сотрудников.
HEADER содержит заголовок строки заголовка "Hello World" с входом в Collins Software.
DSL меню не соответствует DSL макета страницы, поэтому я создал уникальный DSL для меню.
Ресурс Мое главное меню
* определить: меню, м, уровень, метка, значок, действие;
м, 0, файл;
m, 1, open, open.gif, диалог открытия файла;
Каждая проблема уникальна, компьютер может использовать любой формат, DSL предназначены для человека, поэтому сделайте его понятным для людей, что-то, что они могут напечатать, и сделайте язык из реальных слов; ибо мы описываем реальных людей, места и вещи.