如有錯誤請糾正
- 開發DSL并構建自定義編譯器就像javac一樣
- 用戶創建DSL
文本文件
(而不是基于xml的model)- 用戶調用
dslcompiler file.txt
就可以編譯- profit
可以用MPS實現這些功能嗎, 或者說我必須在MPS中自己編寫并編譯dsl文件
Julia Beliaeva(jetbrain)
你好, Alexander!
用戶應該在MPS中編寫DSL文件. 這是我們的目的-- MPS允許你很容易創建IDE支持的DSL, 因此在MPS IDE中這樣做非常好. DSL文件在這里是model
文件并且他們保存為特殊的xml格式, 如果要得到基于文本的dsl, 你就要編寫generator
(如果已經有其他語言的generator
就不用了). 這樣你就可以編譯文本文件了, 流程基本如下:
- 開發DSL
- 在MPS中創建DSL models
- 通過models生成文本. 可以通過MPS IDE (不想用MPS的話可以用 an ant script)
- 用戶編譯/運行生成的文本(這可以通過MPS來實現run configurations language)
Mihail Muhin(jetbrain)
現在不能通過MPS來編寫文本語言, 但是我們想以后引入這個功能.這將可以轉換文本到models(作者我想說的是, 我記得mps 3.x之后是可以將java導入成models的) 因此你可以使用文本語言但是你不能擴展并且編寫解釋器時會有限制
...
Julia Beliaeva(jetbrain)
MPS
models
并不是uml models, 他們更像是AST程序, 但是在MPS中使用就像是在寫文本代碼(盡管他們有很多不同, 總之不是文本代碼). 每個在MPS的程序都是model
. 這些models可以有你想要的IDE支持(代碼提示, 語義高亮, 查找引用, 等等)
好了, 我想說的是基本上每個人上來補了一刀. MPS是用于設計DSL的有力工具, 但不是代碼編譯器. 不過我覺得應該支持更多的文本代碼轉換到model, 這樣就碉堡了. 現在只支持java轉models