Я пишу DSL для выражения потока (оригинал, который я знаю) в groovy. Я хотел бы предоставить пользователю возможность писать функции, которые хранятся и оцениваются в определенных точках потока. Что-то вроде:Groovy DSL со встроенными строчными скриптами
states {
"checkedState" {
onEnter {state->
//do some groovy things with state object
}
}
}
Теперь я уверен, что смогу окружать закрытие в кавычках и хранить это. Но я бы хотел, чтобы подсветка синтаксиса и контент помогали при редактировании этих DSL. Я понимаю, что замыкание COULD указывает артефакты из определения окружающего потока, которое больше не будет действительным при выполнении закрытия в другом контексте, и я в порядке с этим. На самом деле я хотел бы использовать синтаксис закрытия для определения функции, отличной от замыкания.
tl; dr; Мне нужно получить код закрытия при оценке DSL, чтобы он мог быть сохранен в базе данных и впоследствии запущен узлом сценария.
Отличный ответ спасибо! Ответ на этот вопрос будет зависеть от готовой библиотеки рендеринга AST, но я дам ему немного больше времени, чтобы другие люди ответили. –