(35.175.212.130) 您好!臺灣時間:2021/05/18 04:19
字體大小: 字級放大   字級縮小   預設字形  
回查詢結果

詳目顯示:::

我願授權國圖
: 
twitterline
研究生:簡若宜
研究生(外文):Ruo-Yi Jian
論文名稱:支援模組化規則製作之程式碼轉換工具
論文名稱(外文):A Source Code Transformation Tool Supporting Modular Rule Creation
指導教授:莊永裕
指導教授(外文):YungYu Zhuang
學位類別:碩士
校院名稱:國立中央大學
系所名稱:資訊工程學系
學門:工程學門
學類:電資工程學類
論文出版年:2020
畢業學年度:108
語文別:中文
論文頁數:136
中文關鍵詞:模組化程式碼轉換正規表示式圖形化介面
外文關鍵詞:ModularizationCode transformationRegular expressionGraphical user interface
相關次數:
  • 被引用被引用:0
  • 點閱點閱:39
  • 評分評分:
  • 下載下載:0
  • 收藏至我的研究室書目清單書目收藏:0
模組化為頻繁於程式設計中使用的概念之一,適當使用能夠提升整體程式之可讀性、維護性與重用性。雖模組化已運用至眾多領域中,但依然有些許領域尚未使用此概念,例如程式碼轉換領域即為其中之一。在程式碼轉換領域中,主要可分為基於純文字轉換以及基於程式結構轉換兩類,而兩者皆未提供模組化的規則製作方式以及較為完善的既有規則重用方式。因此在規則製作時,難以直接由規則看出其整體涵義,也無法快速重用既有之轉換規則。為改善此問題,本研究提出ReModuRutt,以純文字轉換為基礎提供模組化之規則製作以及便利的重用既有規則功能,並提供簡單易懂之規則製作介面。經由實驗結果可得知,此工具不管在功能完整度、模組化程度以及更改難易度上皆足夠完整,能確實讓使用者得以更加善用已存在之規則,減少規則在撰寫、擴充、修改與引用上的花費時間,讓使用程式轉換工具時能夠更加簡便。
Modularization is one of the common concepts used in programming. Using modularization properly can improve the readability, maintainability and reusability of program. While modularization has been widely used in various programming fields, there are still have some fields where modularization has not been applied, for example source code transformation. Source code transformation can be mainly divided into text-based and structure-based; however, none of them either support modularization in transformation rule, or provide rule reusing methods. Therefore, when making transformation rule, it is difficult to directly see the meaning from the rule, and difficult to reuse the existing transformation rule. In order to solve this problem, we propose a text-based transformation tool called ReModuRutt, which provides modular rule making and easy-to-understand rule making interface. According to our experimental results, this tool is complete enough in terms of functional integrity, modularity, and ease of change. With this tool, users can make better use of existing rules, which can reduce the time spent on rule design, expansion, modification and reference, and make it easier to use source code transformation tools.
摘要 i
ABSTRACT ii
致謝 iii
目錄 iv
圖目錄 vi
表目錄 x
一、 緒論 1
二、 動機與目的 7
2-1 一般規則製作 9
2-2 修改規則 11
2-3 引用既有規則 13
三、 ReModuRutt 22
3-1 工具概述 23
3-2 功能簡介 29
3-2-1 規則製作 29
3-2-2 分析轉換 33
3-3 模組化規則製作 35
3-3-1 引用既有規則 35
3-3-2 引用已存在區塊 38
3-4 不受語言限制之轉換 38
3-5 易理解規則製作介面 39
四、 實作方法 40
4-1 系統架構 40
4-1-1 PlugInModel 40
4-1-2 Model 41
4-1-3 Tool 45
4-1-4 View 47
4-2 規則處理方式 48
4-2-1 讀取規則處理 48
4-2-2 儲存規則處理 51
4-3 分析轉換方式 52
五、 實驗結果比較 60
5-1 功能比較 60
5-2 模組化比較 64
5-2-1 新增規則 64
5-2-2 修改規則 69
5-2-3 移除規則 71
5-2-4 重用規則 73
5-3 更改難度比較 78
5-3-1 一般規則更改 78
5-3-2 引用規則更改 85
5-4 實際案例 96
六、 相關研究 111
6-1 純文字轉換研究 111
6-2 AST轉換研究 111
6-3 其他轉換研究 112
七、 總結 114
參考文獻 115
附錄一 117
[1] Python Software Foundation (2020). Automated Python 2 to 3 code translation. Retrieved from https://docs.python.org/2/library/2to3.html#using-2to3
[2] Apple Inc (2020). Migrating to Swift 5. Retrieved from
https://swift.org/migration-guide-swift5/
[3] Cordy, J. R., Dean, T. R., Malton, A. J., & Schneider, K. A. (2002). Source transformation in software engineering using the TXL transformation system. Information and Software Technology, 44(13), 827-837.
[4] Groce, A., Holmes, J., Marinov, D., Shi, A., & Zhang, L. (2018, May). An extensible, regular-expression-based tool for multi-language mutant generation. In 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion) (pp. 25-28). IEEE.
[5] Cordy, J. R. (2006). The TXL source transformation language. Science of Computer Programming, 61(3), 190-210.
[6] Klint, P., Van Der Storm, T., & Vinju, J. (2009, September). Rascal: A domain specific language for source code analysis and manipulation. In 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation (pp. 168-177). IEEE.
[7] Yi, Q. (2012). POET: a scripting language for applying parameterized source‐to‐source program transformations. Software: Practice and Experience, 42(6), 675-706.
[8] Takizawa, H., Hirasawa, S., Hayashi, Y., Egawa, R., & Kobayashi, H. (2014, December). Xevolver: An XML-based code translation framework for supporting HPC application migration. In 2014 21st International Conference on High Performance Computing (HiPC) (pp. 1-11). IEEE.
[9] Free Software Foundation (2020). Gawk. Retrieved from
https://www.gnu.org/software/gawk/
[10] Free Software Foundation (2020). Gun Sed. Retrieved from
https://www.gnu.org/software/sed/
[11] Notepad++ (2020). Don Ho. Retrieved from https://notepad-plus-plus.org/
[12] Visual Studio (2020). Microsoft. Retrieved from
https://visualstudio.microsoft.com/zh-hant/
[13] Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. In Pioneers and Their Contributions to Software Engineering (pp. 479-498). Springer, Berlin, Heidelberg.
[14] Geoffrion, A. M. (1988). Reusing structured models via model integration (No. WMSI-WP-362). CALIFORNIA UNIV LOS ANGELES WESTERN MANAGEMENT SCIENCE INST.
[15] Grant Skinner (2020). regexr. Retrieved from https://github.com/gskinner/regexr
[16] Firas Dib (2020). Regex101. Retrieved from
https://github.com/firasdib/Regex101
[17] van Tonder, R., & Le Goues, C. (2019, June). Lightweight multi-language syntax transformation with parser parser combinators. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (pp. 363-378).
[18] Balland, E., Brauner, P., Kopetz, R., Moreau, P. E., & Reilles, A. (2007, June). Tom: Piggybacking rewriting on java. In International Conference on Rewriting Techniques and Applications (pp. 36-47). Springer, Berlin, Heidelberg.
[19] Bravenboer, M., Kalleberg, K. T., Vermaas, R., & Visser, E. (2008). Stratego/XT 0.17. A language and toolset for program transformation. Technical Report Series TUD-SERG-2008-011.
[20] Boshernitsan, M., & Graham, S. L. (2006, May). Interactive transformation of Java programs in Eclipse. In Proceedings of the 28th international conference on Software engineering (pp. 791-794).
[21] Boshernitsan, M. (2001). Harmonia: A flexible framework for constructing interactive language-based programming tools. Computer Science Division, University of California.
[22] Pawlak, R., Monperrus, M., Petitprez, N., Noguera, C., & Seinturier, L. (2016). Spoon: A library for implementing analyses and transformations of java source code. Software: Practice and Experience, 46(9), 1155-1179.
[23] Karaivanov, S., Raychev, V., & Vechev, M. (2014, October). Phrase-based statistical translation of programming languages. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (pp. 173-184).
[24] Karampatsis, R. M. Translating Natural Language into Source Code Via Tree Transduction
[25] Chen, X., Liu, C., & Song, D. (2018). Tree-to-tree neural networks for program translation. In Advances in neural information processing systems (pp. 2547-2557).
電子全文 電子全文(網際網路公開日期:20250801)
連結至畢業學校之論文網頁點我開啟連結
註: 此連結為研究生畢業學校所提供,不一定有電子全文可供下載,若連結有誤,請點選上方之〝勘誤回報〞功能,我們會盡快修正,謝謝!
QRCODE
 
 
 
 
 
                                                                                                                                                                                                                                                                                                                                                                                                               
第一頁 上一頁 下一頁 最後一頁 top
無相關論文
 
無相關期刊
 
無相關點閱論文