У своїй книзі "Мови, що визначаються доменом", Мартін Фолвер описує внутрішні та зовнішні DSL.
Internal DSL
= - це підмножина існуючої мови програмування, наприклад, Ruby / Java тощо.
External DSL
Ви визначаєте синтаксис та словниковий запас.
Зовнішній DSL може бути набагато виразнішим, але може вимагати зовнішнього розбору та генерації коду.
Хоча внутрішній DSL не потребує додаткової обробки, але його часом важко зрозуміти для експертів, що не програмують (наприклад, бізнес-аналітики, тестери).
Вибираючи свій тип DSL, важливо проаналізувати, хто його користувачі. Якщо вони здебільшого нетехнічні люди, то кращий вибір може бути зовнішнім DSL. Для невеликої команди досвідчених програмістів може бути обраний внутрішній DSL, якщо мова програмування, яку вони використовують, є достатньо виразною.