Istnieją dwa rodzaje DSL; zewnętrzne i osadzone.
Zewnętrzna strona DSL jest całkowicie oddzielona od języka hosta, tzn. Jest napisana poza językiem, ale zwykle służy do generowania kodu w języku hosta. W tym podejściu XText z XPand są prawdopodobnie najlepszymi narzędziami, ponieważ prosty plik gramatyczny generuje kompletny edytor oparty na Eclipse dla nowego DSL i można używać szablonów kodu w XPand do generowania rzeczywistego kodu Java. XTend i XPand są napisane w Javie, ale jest to przypadkowe, ponieważ można je napisać w dowolnym miejscu, pod warunkiem, że skończysz z kodem Java na końcu procesu.Minusem tego podejścia jest to, że w przypadku każdego rozsądnie złożonego problemu język stanie się dość złożony i wiele pracy będzie wymagane w gramatyce, a nawet więcej w szablonach generowania kodu. Nie można używać żadnych funkcji języka hosta, takich jak ocenianie wyrażeń, więc wszystko to wymaga przebudowy w DSL, jeśli jest to potrzebne. XText wkrótce zawierać XBase, który jest częściowym językiem, który będzie zawierał wyrażeń, aby pomóc tutaj.
Innym podejściem jest osadzone łącze DSL, w którym funkcje domeny wysokiego poziomu są wyrażane w języku hosta za pomocą konstruktów wyższego rzędu (takich jak HOF i monady), zazwyczaj spotykanych w językach funkcjonalnych lub za pomocą takich narzędzi meta-programowania jak makra (np. Seplenienie). Java nie ma żadnej z nich, więc jest złym wyborem dla pracy DSL (lub większości innych form programowania abstrakcyjnego). Spring Roo oferuje obiekt typu meta-programowania dla java z generowaniem, więc może to być opcja. W przeciwnym razie program Scala jest prawdopodobnie najbardziej popularnym językiem Java w języku JVM, który jest popularny i ma potrzebne udogodnienia.
Wbudowane łącza DSL są zwykle znacznie łatwiejsze niż zewnętrzne DSL, ponieważ masz pełne wsparcie języka hosta, więc moją rekomendacją byłoby wypróbowanie Scala.
Jak szybko musi być? Jak szybko musisz to zrobić? – EnabrenTane
@EnabrenTane - Nie musi być super szybki –
co z bardzo szybkim? bardzo szybko to zrobi? czy tylko super szybko? j/k: p – hhafez