跳到主要內容

簡易檢索 / 詳目顯示

研究生: 趙仁鋒
Chao, Jen Feng
論文名稱: 利用模型驅動技術快速產生領域專屬語言之執行與偵錯環境
Rapid generation of executing and debugging environments for Domain-Specific languages based on Model-Driven technology
指導教授: 陳正佳
Chen, Chen Chia
學位類別: 碩士
Master
系所名稱: 理學院 - 資訊科學系
論文出版年: 2012
畢業學年度: 100
語文別: 中文
論文頁數: 90
中文關鍵詞: 執行偵錯生成專屬領域語言自然語意
外文關鍵詞: Executing, Debugging, Generation, Domain-Specific Language, Natural Semantic
相關次數: 點閱:93下載:21
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 領域專屬語言的設計理念是希望能夠協助使用者在特定領域上解決特定問題。然而,大多數領域專屬語言的開發環境與工具均非常貧乏,這將會增加使用者在開發程式上的困難。
    所以本研究利用模型導向技術來建構一套生成系統,使用者只要輸入領域專屬語言的語意以及偵錯定義,就能快速生成語言的執行與偵錯環境,並提供完善的操作介面,輔助使用者加快程式開發的速度。


    The purpose of creating domain-specific languages (DSLs) is to help user solve problems in a particular domain. However, most DSLs are lack of development environments and tools, which would be more difficult to develop programs.
    This thesis is aimed to develop a generating system based on model-driven technology. Given the semantics and debugging definitions of a domain-specific language, the system would be able to generate an executing and debugging environment for the language with friendly user interface, thus improving efficiency and productivity of using the language.

    第一章 序論 . . . . . . . . . . . . . . . . . . . . . . . 1
    1.1 問題動機. . . . . . . . . . . . . . . . . . . . . . 1
    1.2 實現策略. . . . . . . . . . . . . . . . . . . . . . 1
    1.3 特色貢獻. . . . . . . . . . . . . . . . . . . . . . 2
    1.4 章節架構. . . . . . . . . . . . . . . . . . . . . . 3
    第二章 相關研究探討 . . . . . . . . . . . . . . . . . . . 4
    2.1 正規語意. . . . . . . . . . . . . . . . . . . . . . 4
    2.2 編譯器與直譯器生成工具. . . . . . . . . . . . . . . 5
    2.2.1 Relational Meta-Language (RML) And Tools. . . . 6
    2.3 使用者偵錯介面. . . . . . . . . . . . . . . . . . . 6
    2.3.1 Eclipse Debug Platform. . . . . . . . . . . . . 6
    2.4 語言開發框架. . . . . . . . . . . . . . . . . . . . 7
    2.4.1 Xtext . . . . . . . . . . . . . . . . . . . . . 8
    2.5 相似系統. . . . . . . . . . . . . . . . . . . . . . 8
    2.5.1 DSL Debugging Framework . . . . . . . . . . . . 8
    2.5.2 EProvide. . . . . . . . . . . . . . . . . . . . 9
    2.5.3 Spoofax 偵錯器生成框架. . . . . . . . . . . . . 10
    2.5.4 相似系統比較. . . . . . . . . . . . . . . . . . 11
    第三章 系統架構分析 . . . . . . . . . . . . . . . . . . . 12
    3.1 架構概要. . . . . . . . . . . . . . . . . . . . . . 12
    3.1.1 系統生成時期架構. . . . . . . . . . . . . . . . 13
    3.1.2 系統執行時期架構. . . . . . . . . . . . . . . . 14
    3.2 系統輸入模型. . . . . . . . . . . . . . . . . . . . 15
    3.2.1 文法. . . . . . . . . . . . . . . . . . . . . . 15
    3.2.2 自然語意. . . . . . . . . . . . . . . . . . . . 16
    3.2.3 偵錯指令. . . . . . . . . . . . . . . . . . . . 26
    3.3 RGD2Code. . . . . . . . . . . . . . . . . . . . . . 29
    3.4 RageDen 執行平台. . . . . . . . . . . . . . . . . . 30
    3.5 RageDen 偵錯套件. . . . . . . . . . . . . . . . . . 31
    3.5.1 啟動器. . . . . . . . . . . . . . . . . . . . . 32
    3.5.2 偵錯模型. . . . . . . . . . . . . . . . . . . . 32
    3.5.3 中斷點機制. . . . . . . . . . . . . . . . . . . 32
    3.5.4 原始碼整合顯示. . . . . . . . . . . . . . . . . 33
    第四章 系統實作 . . . . . . . . . . . . . . . . . . . . . 35
    4.1 建立RGD2Code. . . . . . . . . . . . . . . . . . . . 35
    4.2 建構RageDen 執行平台. . . . . . . . . . . . . . . . 37
    4.2.1 載入執行元件. . . . . . . . . . . . . . . . . . 37
    4.2.2 實現偵錯機制. . . . . . . . . . . . . . . . . . 39
    4.2.3 接收偵錯命令與回傳偵錯事件. . . . . . . . . . . 46
    4.3 實作RageDen 偵錯套件. . . . . . . . . . . . . . . . 47
    4.3.1 建構啟動器. . . . . . . . . . . . . . . . . . . 47
    4.3.2 實作偵錯模型. . . . . . . . . . . . . . . . . . 48
    4.3.3 設置中斷點機制. . . . . . . . . . . . . . . . . 52
    4.3.4 整合原始碼顯示. . . . . . . . . . . . . . . . . 53
    第五章 系統範例 . . . . . . . . . . . . . . . . . . . . . 65
    5.1 專案設置. . . . . . . . . . . . . . . . . . . . . . 65
    5.2 建立Robot 的編輯環境. . . . . . . . . . . . . . . . 66
    5.3 描述Robot 自然語意及偵錯指令. . . . . . . . . . . . 66
    5.4 生成執行元件並新增延伸元件. . . . . . . . . . . . . 73
    5.5 執行與偵錯Robot 程式碼. . . . . . . . . . . . . . . 73
    第六章 結論與未來展望 . . . . . . . . . . . . . . . . . . 76
    6.1 結論. . . . . . . . . . . . . . . . . . . . . . . . 76
    6.2 未來展望. . . . . . . . . . . . . . . . . . . . . . 76
    參考文獻. . . . . . . . . . . . . . . . . . . . . . . . . 80
    附錄A:RGD 文法規則 . . . . . . . . . . . . . . . . . . . 82

    [1] A. van Deursen, P. Klint, and J. Visser, "Domain-specific languages: an annotated bibliography," SIGPLAN Not., vol35, no 6, pp. 26-36, 2000.
    [2] O. M. G. Inc., "Omg model driven architecture." http://www.omg.org/mda/, 2011.
    [3] E. Foundation, "Eclipse.". http://www.eclipse.org/, 2012.
    [4] D. Wright, and C. Windatt, "Debug platform: The basics." http://www.eclipse.org/eclipse/debug/documents/ec_2008/Debug_Tutorial_Basic_2008.ppt, 2008.
    [5] F. N. Hanne Riis Nielson, Semantics with Applications: An Appetizer. Springer, 2007.
    [6] G. Winskel, The Formal Semantics of Programming Languages. MIT Press, 1993.
    [7] G. D. Plotkin, "A structural approach to operational semantics," J. Log. Algebr. Program, vol. 60-61, pp. 17-139, 2004.
    [8] G. Kahn, "Natural semantics," in STACS (F.-J. Brandenburg, G. Vidal-Naquet, and M. Wirsing, eds.), vol. 247 of Lecture Notes in Computer Science, pp. 22-39, Springer, 1987.
    [9] R. S. Alfred V. Aho and J. D. Ullman, Compilers: principles, techniques, and tools. Addison-Wesley Longman Publishing Co., Inc., 2nd ed., 2006.
    [10] "The lex & yacc page." http://dinosaur.compilertools.net/.
    [11] "Relational meta-language and tools." http://www.ida.liu.se/~pelab/rml/, 2008.
    [12] "k-framework." http://code.google.com/p/k-framework/, 2011.
    [13] "Asf+sdf." http://www.meta-environment.org/Meta-Environment/ASF%2bSDF, 2010.
    [14] "Stratego/xt." http://strategoxt.org/, 2011.
    [15] "The txl programming language." http://www.txl.ca/, 2011.
    [16] D. Prawitz, Natural Deduction: A Proof-Theoretical Study. Dover Publications, 2006.
    [17] T. Despeyroux, "Typol: A formalism to implement natural semantics," research report, INRIA Sophia-Antipolis, 1988.
    [18] M. Pettersson, Compiling Natural Semantics, vol. 1549 of Lecture Notes in Computer Science. Springer, 1999.
    [19] A. Blewitt, "Getting started with eclipse plug-ins: understanding extension points." http://www.eclipsezone.com/
    [20] "Eclipse java development tools." http://www.eclipse.org/jdt/, 2012.
    [21] "Plug-in development environment." http://www.eclipse.org/, 2012.
    [22] T.E. Foundation, "Xtext." http://www.eclipse.org/Xtext/, 2011.
    [23] "Eclipse modeling framework project." http://eclipse.org/modeling/emf/, 2012.
    [24] T. Parr, "Antlr parser generator." http://www.antlr.org/, 2012.
    [25] T. E. Foundation, "Xtend." http://www.eclipse.org/Xtext/xtend/, 2011.
    [26] "Dsl debugging framework." http://students.cis.uab.edu/wuh/DDF/index.html, 2008.
    [27] "Eprovide." http://eprovide.sourceforge.net/, 2008.
    [28] "Spoofax." http://strategoxt.org/Spoofax, 2011.
    [29] R. T. Lindeman, L. C. L. Kats, and E. Visser, "Declaratively defining domain-specific language debuggers." in Generative Programming and Component Engineering, 7th International Conference, GPCE 2011, Proceedings (E. Denney and U. P. Schultz, eds.), ACM, 2011.
    [30] M. Fowler, "Domain specific language." http://www.martinfowler.com/bliki/DomainSpecificLanguage.html, 2009.
    [31] H. Wu, J. Gray, and M. Mernik, "Grammar-driven generation of domain-specific language debuggers," Software : Practice and Experience, vol.38, pp. 1073-1103, 2008.
    [32] D. A. Sadilek and G. Wachsmuth, "Prototyping visual interpreters and debuggers for domain-specific modelling languages," in Proceedings of the 4th European conference on Model Driven Architecture: Foundations and Applications, ECMDA-FA '08, (Berlin, Heidelberg), pp. 63-78, Springer-Verlag, 2008.
    [33] J. F. Andreas Blunk and D. A. Sadilek, "Modelling a debugger for an imperative voice controllanguage," in Proceedings of the 14th international SDL conference on Design for motes and mobiles, SDL'09, (Berlin, Heidelberg), pp. 149-164, Springer-Verlag, 2009.
    [34] J. Heering, R. H. Hendriks, P. Klint, and J. Rekers, "The syntax definition formalism sdf," SIGPLAN Not. 24, pp. 43-75, November 1989.
    [35] H. Wu, J. Gray, S. Roychoudhury and M. Mernik, "Weaving a debugging aspect into domain-specific language grammars," in Proceedings of the 2005 ACM symposium on Applied computing, SAC '05, pp. 1370-1374, ACM, 2005.
    [36] G. Kiczales, J. Lamping, and etc. "Aspect-oriented programming," in European Conference on Object-Oriented Programming(ECOOP), pp. 220-242, June 1997.
    [37] M. T. Robin Milner and R. Harper, The Definition of Standard ML. The MIT Press, 1997.
    [38] T. E. Foundation, "We have lift-off: The launching framework in eclipse," http://www.eclipse.org/articles/
    [39] D. Wright and B. Freeman-Benson, "How to write an eclipse debugger," http://www.eclipse.org/articles/
    [40] M. Odersky, "The scala programming language." http://www.scala-lang.org/, 2012.

    QR CODE
    :::