Я понимаю, что этой теме уже 3 года, но все еще чувствую, что мне нужно предложить ее мне. Спрашивающий спросил, можно ли использовать Java для того, чтобы DSL выглядел как можно ближе, как
Get an input XML file from network shared folder or subversion repository
Import the XML file using the interface
Check if the import result message was successfull
Export the XML corresponding to the object that was just imported
using the interface and check if it correct.
Ответ - да, это может быть сделано, и было сделано для аналогичных нужд. Много лет назад я создал инфраструктуру Java DSL, которая - с простой настройкой - позволяла использовать следующий синтаксис для компилируемого, запускаемого кода:
file InputFile
message Message
get InputFile from http://<....>
import Message from InputFile
if validate Message export Message
else
begin
! Signal an error
end
В приведенном выше описании ключевые слова file
, message
, get
, import
, validate
и export
представляют собой пользовательские ключевые слова, для каждого из которых требуется два простых класса, размер которых не превышает страницу кода. реализовать свои функции компилятора и времени выполнения. Когда каждая часть функциональности завершена, она помещается в платформу, где она сразу же доступна для выполнения своей работы.
Обратите внимание, что это только одна из возможных форм; точный синтаксис может быть свободно выбран разработчиком. По сути, система представляет собой высокоуровневый ассемблерный язык DIY, использующий предварительно написанные классы Java для выполнения всех функциональных блоков, как для компиляции, так и для среды выполнения. Каркас определяет, где эти биты функциональности должны быть размещены, и предоставляет необходимые абстрактные классы и интерфейсы для реализации.
Система удовлетворяет первичную потребность в ясности , когда непрограммисты могут легко увидеть, что происходит. Изменения можно вносить быстро и запускать немедленно, так как компиляция происходит практически мгновенно.
Полный (открытый) исходный код доступен по запросу. Существует универсальная версия Java, а также версия для Android.