Groovy에서 흐름을 표현하기위한 DSL을 작성하고 있습니다. 플로우의 특정 지점에서 저장되고 평가되는 함수를 작성할 수있는 기능을 사용자에게 제공하고자합니다. 다음과 같이하십시오 :groovy 스크립트가 포함 된 Groovy DSL
states {
"checkedState" {
onEnter {state->
//do some groovy things with state object
}
}
}
자, 저는 닫힌 부분을 따옴표로 묶고 저장할 수 있다고 확신합니다. 그러나이 DSL을 편집 할 때 가능한 경우 구문 강조 및 콘텐츠 지원을 유지하고 싶습니다. 클로저가 다른 컨텍스트에서 클로저를 실행할 때 더 이상 유효하지 않은 주변 흐름 정의에서 클로저가 참조 할 수있는 참조 아티팩트가 있다는 것을 알았습니다. 실제로 클로저 구문을 클로저가 아닌 함수 정의에 사용하고 싶습니다.
tl; dr; DSL을 데이터베이스에 저장하고 나중에 스크립트 호스트에서 실행할 수 있도록 DSL을 평가하는 동안 클로저의 코드를 가져와야합니다.
대단히 감사합니다! 미리 작성된 AST 렌더링 라이브러리의 부족으로이 답변이 이길 것입니다. 그러나 다른 사람들이 대답 할 수있는 시간을 조금 더 갖도록하겠습니다. –