使用MPS創建DSL的問答

question about using dsl

Alexander Krasnukhin

如有錯誤請糾正

  1. 開發DSL并構建自定義編譯器就像javac一樣
  2. 用戶創建DSL文本文件(而不是基于xml的model)
  3. 用戶調用dslcompiler file.txt 就可以編譯
  4. profit

可以用MPS實現這些功能嗎, 或者說我必須在MPS中自己編寫并編譯dsl文件


Julia Beliaeva(jetbrain)

你好, Alexander!
用戶應該在MPS中編寫DSL文件. 這是我們的目的-- MPS允許你很容易創建IDE支持的DSL, 因此在MPS IDE中這樣做非常好. DSL文件在這里是model文件并且他們保存為特殊的xml格式, 如果要得到基于文本的dsl, 你就要編寫generator(如果已經有其他語言的generator就不用了). 這樣你就可以編譯文本文件了, 流程基本如下:

  1. 開發DSL
  2. 在MPS中創建DSL models
  3. 通過models生成文本. 可以通過MPS IDE (不想用MPS的話可以用 an ant script)
  4. 用戶編譯/運行生成的文本(這可以通過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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,951評論 19 139
  • 摘要:機器學習牽涉的編程語言十分之廣,包括了MATLAB、Python、Clojure、Ruby等等。為了讓開發者...
    andyhacker閱讀 1,061評論 0 18
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,381評論 25 708
  • 煙花在夜空凋落 暗就像毒蛇 爬滿角落 窗外的星子墜落 暗終于流浪 有光 把夜照亮
    犬馬牧羊閱讀 229評論 0 0
  • 這是多么美好的一天!運動40分,讀書50分,講話20分,共計110 感恩江蘇蘇州賈姐的真摯教導!首先建議我激情熱情...
    _阿金_閱讀 111評論 0 0