2013-11-26 79 views
1

我們正在考慮使用xtext來開發一個DSL,它可以用來簡化一些複雜的邏輯和查詢操作,但是想在Java類中就地使用它。這可以做到嗎?xtext可以用作Java中的表達式語言嗎?

我們想要的是用它來開發幾乎和LINQ類似的東西,但在Java中可用。我見過的所有xtext示例都會從DSL中生成.java類,這很好,但不完全是我們想要的。

所以,像這樣:

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

我相信我們可以做到這一點,如果查詢被寫入預先在一個單獨的查詢文件,然後通過XTEXT發生器編譯成形式可以傳遞到我們的數據管理層,但我們希望有一些比這更靈活。

xText看起來很有前途,但看起來很可能我們最終會使用jOOQ或類似的東西而不是真正的DSL。

回答

1

不幸的是,不幸的是,無論是Eclipse的Java編輯器還是Java解析器和編譯器都不允許掛鉤,這樣做是可能的。使用Xbase,您可以在您的DSL中嵌入類似Java的表達式和語句,但反過來不支持。

+0

在我看來,這將成爲整個Xtext堆棧的殺手鐗!太糟糕了 :-) –

1

但似乎我們最終會使用jOOQ或類似的東西,而不是真正的DSL。

jOOQ 一個真正的DSL :-)真正internal domain specific language,而不是一個external DSL。事實上,我最近一直在研究Xtend/Xtext,看看jOOQ本身是否可以通過定義一個解析SQL語句並將它們轉換爲jOOQ的實際語法來增強它使它看起來不像Java和更像SQL調用。

這似乎是可能的與0123,,由上述Xtend和Xtext相同的人創建的技術。實際上,Xtend語言基於Xbase。根據他們的文檔,這將允許您將自己的語法集成到幾乎看起來像Java的東西,從而定義Java和您自己的DSL之間的交互模式。

到目前爲止我還沒有成功地瞭解他們的文檔,但也許你可以得到一些幫助on their forum