LINUX.ORG.RU

Ответ на: комментарий от Ceiling_QB

Есть ли уже созданные инструменты для этого? Как сделать это с нуля средствами только одного языка?

wall_jvm
() автор топика

Просто разбивай программу на функции, вот тебе и будет DSL. При чём тут Kotlin - не понятно.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Потому что в котлине можно писать функции расширения - они возможность добавлять функции к классам без доступа к исходному коду самого класса.

wall_jvm
() автор топика

Eclipse IDE for Java and DSL Developers

Package Description The essential tools for Java and DSL developers, including a Java & Xtend IDE, a DSL Framework (Xtext), a Git client, XML Editor, and Maven integration.

This package includes:

  • Xtext

Detailed features list

  • org.eclipse.epp.package.dsl.feature
  • org.eclipse.epp.package.common.feature
  • org.eclipse.platform
  • org.eclipse.epp.mpc
  • org.eclipse.emf.ecore.xcore.sdk
  • org.eclipse.emf.mwe2.language.sdk
  • org.eclipse.emf.sdk
  • org.eclipse.oomph.setup
  • org.eclipse.xtext.sdk
  • org.eclipse.lsp4j.sdk
iZEN ★★★★★
()
Ответ на: комментарий от wall_jvm

Это просто синтаксический сахар, никто не мешает тебе передавать дополнительный параметр в Java.

Legioner ★★★★★
()
Ответ на: комментарий от wall_jvm

обобщу:

любому ТСу: нужно А

ТС: че-то у меня не все гладко с Б

советчик 1: Б ненужно, В рулит

советчик N: советчик K ненужен

t184256 ★★★★★
()
Ответ на: комментарий от wall_jvm

Прочитай ещё раз моё сообщение. DSL это хорошо, правильно и нужно, только язык программирования не имеет отношения к этому паттерну. Это просто разбиение программы на функции, составляющие словарь твоего нового языка. Всё, что требуется от базового языка программирования - поддерживать функции. С этим справляется даже виртовский паскаль.

Legioner ★★★★★
()

Есть довольно мощный фреймворк Xtext, там свой язык описания грамматики по которой генерируется парсер, модель AST и заготовки разных механизмов вроде форматтера, валидатора, автодополнения и тд. Помимо средств интеграции этого всего в Eclipse есть поддержка LSP, если нужно.

xcariba ★★
()

Конечно scala.

Ищи «Building DSLs using parser combinators in Scala».

Djanik
()
Ответ на: комментарий от Legioner

В DSL, L - это язык. А в любом языке есть синтаксис и семантика. Писать на паскале компилятор будет только сумашедший.

Djanik
()
Ответ на: комментарий от Djanik

Писать на паскале компилятор будет только сумашедший.

Значит Вирт и Хэйлсберг — сумасшедшие.

iZEN ★★★★★
()
Ответ на: комментарий от Djanik

Стыдоба, не знать таких людей

anonymous
()
Ответ на: комментарий от t184256

Так он не привел никаких убедительных доводов что ему нужен DSL и уж тем более что он действительно понимает суть DSL чья идейная составляющая насмешка над здравым смыслом и введение слоя дополнительной определительной базы ради существования этой базы. Под понятие DSL подпадает любой формат данных например, а так пусть берет ANTLR4 и сооружает свою никому не нужную версию DSL.

anonymous
()
Ответ на: комментарий от Djanik

DSL делят на внутренние (специальное API, используя которое можно использовать подмножество языка как специальный язык для предметной области) и внешние (которые ты имел в виду). Пример внутреннего DSL для описания интерфейса (накидал что-то от балды):

vlayout{
  label{ text = "text" },
  button{ text = "click me", onclick = "on_vasya_button_click" },
}

Это полностью валидный Lua-код, для которого не нужно писать парсер. В принципе, сделать что-то подобное можно (почти?) на любом языке, в том числе и на Паскале.

Ceiling_QB ★★★★
()
Последнее исправление: Ceiling_QB (всего исправлений: 1)
Ответ на: комментарий от Djanik

https://premake.github.io/docs/Your-First-Script

-- premake5.lua
workspace "HelloWorld"
   configurations { "Debug", "Release" }

project "HelloWorld"
   kind "ConsoleApp"
   language "C"
   targetdir "bin/%{cfg.buildcfg}"

   files { "**.h", "**.c" }

   filter "configurations:Debug"
      defines { "DEBUG" }
      symbols "On"

   filter "configurations:Release"
      defines { "NDEBUG" }
      optimize "On"

Вот ещё DSL, самый настоящий.

Ceiling_QB ★★★★
()
Ответ на: комментарий от Ceiling_QB

Хрень какая то. Чем отличается, если я такой конфиг напишу на json или xml? Ты еще скажи, что html это DSL.

Пример DSL - postscript, язык описания страниц, если не знаешь.

Djanik
()
Ответ на: комментарий от Djanik

У меня нет желания спорить об определениях, особенно с человеком, с ходу кидающим тебе в морду «хрень какая-то» и «если не знаешь».

Если хочешь узнать больше о видах и способах реализации DSL, советую классическую книжку по теме: Мартин Фаулер, Предметно-ориентированные языки программирования.

А по теме треда — в нём нет смысла, пока ТС не напишет явно, что хочет.

Ceiling_QB ★★★★
()
Ответ на: комментарий от Ceiling_QB

А по теме треда — в нём нет смысла, пока ТС не напишет явно, что хочет.

Он хочет …, что не понятного /шутка конечно/?

anonymous
()
Ответ на: комментарий от Djanik

Я не обижаюсь, просто нет смысла спорить, что такое DSL, и можно ли считать HTML за DSL (спойлер: да).

Ceiling_QB ★★★★
()
Ответ на: комментарий от Djanik

Сам загугли, и дай развернутый ответ почему эти перцы не сумашедшие.

wikipedia в помощь.

iZEN ★★★★★
()

На конструкциях и абстракциях языка java ничего не выйдет, точнее получится как в jooq и mockito. Вот kotlin позволяет более менее нормально повыпендриваться с DSL.

Aber ★★★★★
()

Покажи пример, какой dsl хочешь получить в результате.

cdshines ★★★★★
()

Для каких целей? Можно вот на antlr посмотреть

EugeneBas ★★
()
Ответ на: комментарий от Legioner

DSL это хорошо, правильно и нужно, только язык программирования не имеет отношения к этому паттерну. Это просто разбиение программы на функции, составляющие словарь твоего нового языка. Всё, что требуется от базового языка программирования - поддерживать функции. С этим справляется даже виртовский паскаль.

О, очередной пятизвездочный дурачок транслирует тупую шизофазию из манямирка. Никогда не было, и вот опять.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.