Как программист, мне приходится время от времени писать DSL. В основном они написаны на языке программирования "host", в форме строк или цепочки вызова функций. Например, при написании кода, относящегося к базе данных, я должен объединить SQL для запросов. Если я решу использовать среду ORM, такую как hibernate, обычно я буду связывать функции для определения условий моего запроса, что можно рассматривать как другую форму DSL.
Во многих случаях допустимо писать DSL внутри основной язык, но если DSL станет сложным, он потеряет удобочитаемость. Поскольку независимо от того, как DSL в хосте должен соответствовать синтаксису основного языка, в DSL необходимо добавить некоторые дополнительные вещи, такие как фигурные скобки / скобки / круглые скобки, которые не передают никаких значений, но создают шумы.
Есть ли решение этой проблемы? Я думаю, что ответ - да, но частично. Мы видим, что многие языки поддерживают «шаблонную строку», а JSX, улучшенный JavaScript, поддерживает встраивание шаблонов HTML. Но все эти решения предназначены только для конкретных DSL штор. Насколько я знаю, ни один язык не предоставляет общий механизм решения этой проблемы. Но в мире так много языков программирования, и часто появляются новые языки программирования. Это заставляет меня задуматься: существуют ли некоторые менее известные языки, позволяющие людям свободно писать DSL, не учитывая синтаксис основного языка? Например, язык с DSL-parsing-системой, который может анализировать DSL, если вы устанавливаете синтаксический анализатор этого DSL.