2013-11-26 2 views
1

우리는 xtext를 사용하여 복잡한 논리 및 쿼리 연산을 단순화하는 데 사용할 수있는 DSL을 개발할 생각이지만 Java 클래스 내에서이를 사용하고자합니다. 이 작업을 수행 할 수 있습니까?xtext를 Java에서 표현 언어로 사용할 수 있습니까?

우리가 원하는 것은 LINQ와 거의 비슷하지만 Java 내에서 사용할 수있는 것을 개발하는 데 사용하는 것입니다. xtext에 대해 본 모든 예제는 DSL에서 .java 클래스를 생성하는데, 위의 코드는 훌륭하지만 정확히 여기서 원하는 것은 아닙니다.

그래서, 뭔가 같은 : 쿼리가있는 형태로 별도의 쿼리 파일에 미리 작성된 후 xtext 발생기를 통해 컴파일 된 경우

List<ICreature> dragons = dataEngine.parse(get Monster where Type = Dragon and HitPoints > 1000);

나는 우리가 이 작업을 수행 할 수 믿습니다 우리의 데이터 관리 레이어로 전달 될 수 있지만 우리는 그보다 더 융통성있는 것을 원합니다.

xText는 유망 해 보이지만 실제로는 jOOQ 또는 실제 DSL 대신에 비슷한 것을 사용하게 될 것 같습니다.

답변

1

아니요, 불행히도 Eclipse의 Java 편집기 나 Java 파서 및 컴파일러 모두 이러한 방식으로 연결될 수 없습니다. Xbase를 사용하면 Java와 유사한 표현식과 구문을 DSL에 임베드 할 수 있지만 반대로는 지원되지 않습니다.

+0

이것은 내 의견으로는 전체 Xtext 스택의 킬러 기능입니다. 너무 나쁨 :-) –

1

그러나 사실상 DSL 대신 jOOQ 또는 이와 유사한 것을 사용하게 될 것 같습니다. external DSL에 반대

jOOQ 는 진정한 internal domain specific language :-) 진정한 DSL이다. 사실 나는 최근에 Xtend/Xtext을 조사해 왔는데, jOOQ 자체가 SQL 문을 구문 분석하고 jOOQ로 변환하기위한 실제 문법을 정의하여 Java와 비슷하게 보이지 않게 만들 수 있는지 확인했습니다. 전화.

위의 Xtend 및 Xtext와 동일한 사람이 만든 Xbase이라는 기술로 인해 가능할 것으로 보입니다. 사실 Xtend 언어는 Xbase를 기반으로합니다. 그들의 문서에 따르면, 이것은 당신이 자신의 문법을 Java와 거의 비슷한 것으로 통합 할 수있게 해줄 것이며, 따라서 Java와 자신의 DSL 사이의 상호 작용 패턴을 정의 할 수있게 될 것입니다.

지금까지 문서를 이해하지 못했지만 어쩌면 도움을받을 수 있습니까? on their forum?

관련 문제