【文章內(nèi)容簡介】
.......................................................................19 運行菜單功能模塊的設(shè)計 ........................................................................................................20 抽象語法樹 [3] .............................................................................................................................20 錯誤報告 [3] .................................................................................................................................21 詞法分析 ....................................................................................................................................21 圖形化輸出 ................................................................................................................................31第五章 系統(tǒng)測試及運行結(jié)果 ....................................................................................................33 系統(tǒng)主界面 ................................................................................................................................33 文件菜單功能模塊 ....................................................................................................................34 編輯菜單功能模塊 ....................................................................................................................34 運行菜單功能模塊 ....................................................................................................................36總結(jié) ..................................................................................................................................................38參考文獻 ..........................................................................................................................................39致謝 ..................................................................................................................................................411基 于 圖 形 的 C++程 序 模 擬 器 的 設(shè) 計 與 實 現(xiàn)——語 法 分 析 與 運 行 功 能 設(shè) 計 與 實 現(xiàn)工學(xué)院 20xx 級計算機與技術(shù)專業(yè) 黎帥師摘要本文主要介紹了一個基于圖形化程序模擬器的語法分析及運行功能設(shè)計及實現(xiàn)過程,整個系統(tǒng)的優(yōu)點是使程序運行過程圖形化,能使使用者更加清楚C++程序的執(zhí)行過程。整個系統(tǒng)采用的平臺基于 Windows 系統(tǒng)下的 GDI+庫和 CCrystal 庫,采用MVC 框架,使用 VC++ 進行開發(fā),利用 spirit 框架生成抽象語法樹,其中GDI+用來圖形化演示,CCrystal 用來負責(zé)優(yōu)化界面。系統(tǒng)能夠打開并編輯保存在磁盤上的文件,最后通過運行功能基于圖形化的演示,用戶可以對變量值及棧內(nèi)容的變化情況有很好的了解。關(guān)鍵字:程 序 模 擬 器 ; 語 法 分 析 ; GDI+2Abstract This paper mainly introduces parsing analysis, run functional design and realize process on the basis of the graphical program simulator, and the merit of the whole system is to make the program39。s running procedure into a graphical procedure so That the users can take a better understanding of running process of the C++ program.The whole system bases on the store of the GDI+ and CCrystal of the Windows system, adopts the frame of the MVC, develops by the usage of VC++, and es to be abstract parsing tree after making use of the frame of Spirit, among which GDI is used for graphical demonstration and CCrystal for optimizing the interface. The system can open and save the documents of the disks and the users can make a good understanding of the changeable conditions of the variable value and the content of the stack by running the function which bases on the graphical demonstration.Keyword: program simulator。 parsing analysis。 GDI+3第一章 前 言 課題研究背景現(xiàn)有程序模擬器的發(fā)展方向主要是針對一般程序的運行,用戶無法了解內(nèi)部數(shù)據(jù)的處理過程及整個系統(tǒng)的組成,對整個程序的運行過程不能有一個很好交互過程,在現(xiàn)有程序模擬器的基礎(chǔ)上來對新程序模擬器的研發(fā),基于 C++程序模擬器是一種可以對數(shù)據(jù)透明化,并且可以使用戶很好了解內(nèi)部數(shù)據(jù)處理過程的一種程序模擬器。 現(xiàn)有程序模擬器的狀況程序模擬器的功能主要是對程序進行模擬測試,現(xiàn)有的程序模擬器,諸如 java 程序模擬器,搜索引擎程序模擬器等主要功能不具備對程序的圖形化模擬執(zhí)行等功能,這些程序模擬器無法使程序的執(zhí)行情況展現(xiàn)出來,包括程序中變量及棧的使用情況,只能通過其它的方法,諸如調(diào)試的方法來對變量進行查看和顯示。此外,棧的內(nèi)容也不能對用戶透明化,使用戶不能棧中的內(nèi)容進行初步的了解。 課題研究的主要價值 本程序模擬器的主要特點是數(shù)據(jù)對用戶透明化,能夠使用戶實時了解程序內(nèi)部變量的處理過程,主要體現(xiàn)在棧是怎么處理變量及函數(shù)的,在現(xiàn)代的教學(xué)過程當(dāng)中,如果使用此程序模擬器進行教學(xué)將會直到意想不到的效果,它主要是以 C++語言編寫的源程序來實現(xiàn)整個模擬過程,在程序的模擬過程當(dāng)中,用戶可以很好地了解到變量值的變化及進出棧的過程,如果加上編譯器的話,該系統(tǒng)不僅僅可用于教學(xué),而且可以當(dāng)做現(xiàn)有的編輯程序工具使用。 本論文的主要目的及內(nèi)容本論文的主要目的是:通過分析此次課題,在現(xiàn)有的 GDI+技術(shù)和常用的遞歸下降程序算法基礎(chǔ)上,利用 Visual C++這個開發(fā)工具以面向?qū)ο蟮?開發(fā)模式設(shè)計出一個具有圖形化顯示功能的程序模擬器,最后在此形式上,可以使其它開發(fā)者進一步對系統(tǒng)進行完善。本論文的主要內(nèi)容:1. 對 GDI+技術(shù)進行相應(yīng)的描述和解釋,為圖形化顯示輸出作基礎(chǔ)。2. 程序中所用到的遞歸下降算法的相應(yīng)描述,程序在進行語法分析過程中對 TOKEN 串的識別,跳過空白字符的相應(yīng)處理方法,在運行程序時,程序運用 STL 中的棧和向量處理數(shù)據(jù),確定函數(shù) main 的起始位置。3. GDI+在項目中的應(yīng)用 DrawString(),DrawLine(),DrawRectangle(),Graphics 類,Pen 類等。4. MFC 的主要類介紹及 MVC 框架介紹。5第二章 相關(guān)技術(shù)簡介 系統(tǒng)使用到的相關(guān)技術(shù)整個系統(tǒng)中所用的技術(shù)主要有 C++中的 STL,VC++中的 MFC,以及GDI+和 CCrystal。其中 C++中的 STL 主要用到了 stack 和 vector 等類及其相應(yīng)的算法。MFC 用到的主要是 CMAP 類、CRichEditCtrl 類、CControlBar 及多文檔類的操作,GDI+中用到的主要是 DrawString 及DrawRectangle 等方法,CCrystal 用到了 CCrystalTextView 等類。 在實現(xiàn)語法分析的階段用到了程序的遞歸下降方法,SPIRIT 框架,另外系統(tǒng)的外層框架用到了 MVC 框架,用戶的接口可以很容易的改變,如果程序中的數(shù)據(jù)發(fā)生了變化,在右邊的棧中可以實時的反應(yīng)出來。 GDI+技術(shù)介紹 [1]GDI+是 Windows XP 中的一個子系統(tǒng),它主要負責(zé)在顯示屏幕和打印設(shè)備輸出有關(guān)信息,它是一組通過 C++類實現(xiàn)的應(yīng)用程序編程接口。顧名思義,GDI+是以前版本 GDI 的繼承者,出于兼容性考慮,Windows XP 仍然支持以前版本的 GDI,但是在開發(fā)新應(yīng)用程序的時候,開發(fā)人員為了滿足圖形輸出需要應(yīng)該使用 GDI+,因為 GDI+對以前的 Windows 版本中 GDI進行了優(yōu)化,并添加了許多新的功能。 作為圖形設(shè)備接口的 GDI+使得應(yīng)用程序開發(fā)人員在輸出屏幕和打印機信息的時候無需考慮具體顯示設(shè)備的細節(jié),他們只需調(diào)用 GDI+庫輸出的類的一些方法即可完成圖形操作,真正的繪圖工作由這些方法交給特定的設(shè)備驅(qū)動程序來完成,GDI+設(shè)備無關(guān)的應(yīng)用程序變得非常容易。+新增功能:(Gradient Brushes) GDI+允許用戶創(chuàng)建一個沿路徑或直線漸變的畫刷,來填充外形(shapes),路徑(paths),區(qū)域(regions),漸變畫刷同樣也可以畫直線、曲線、路徑,當(dāng)你用一個線形畫刷填充一個外形(shapes) 時,顏色就能夠沿外形逐漸變化。(Cardinal Splines) 6 GDI+支持基數(shù)樣條函數(shù),而 GDI 不支持。基數(shù)樣條是一組單個曲線按照一定的順序連接而成的一條較大曲線。樣條由一系列點指定,并通過每一個指定的點。由于基數(shù)樣條平滑地穿過組中的每一個點(不出現(xiàn)尖角) ,因而它比用直線連接創(chuàng)建的路徑更精確。下面是分別使用兩種方法創(chuàng)建的圖形,一個使用基數(shù)樣條,一個使用直線。 (Persistent Path Objects ) 在 GDI 中,路徑屬于設(shè)備描述表(DC) ,畫完后路徑就會被破壞。在GDI+中,繪圖工作由 Graphics 對象來完成,你可以創(chuàng)建幾個與 Graphics 分開的路徑對象,繪圖操作時路徑對象不被破環(huán),這樣你就可以多次使用同一個路徑對象畫路徑了。 (Transformations & Matrix Object) GDI+提供了矩陣對象,一個非常強大的工具,使得編寫圖形的旋轉(zhuǎn)、平移、縮放代碼變得非常容易。一個矩陣對象總是和一個圖形變換對相聯(lián)系起來,比方說,路徑對象(PATH)有一個 Transform 方法,它的一個參數(shù)能夠接受矩陣對象的地址,每次路徑繪制時,它能夠根據(jù)變換矩陣繪制。下面的圖形是一個圖形變換前后的例子,變換按照先縮放后旋轉(zhuǎn)完成。 (Scalable Regions) GDI+ 在區(qū)域(regions)方面對 GDI 進行了改進,在 GDI 中,Regions存儲在設(shè)備坐標中,對 Regions 唯一可進行圖形變換的操作就是對區(qū)域進行平移。而 GDI+用世界坐標存儲區(qū)域 (Regions),允許對區(qū)域進行任何圖形變換(譬如如圖所示的縮放) ,圖形變換以變換矩陣存儲,下面例子是一個區(qū)域變換前后的例子(縮放、旋轉(zhuǎn)、平移) Blending(混合)