袁婷
(西安理工大學(xué) 高等技術(shù)學(xué)院,陜西 西安 710082)
編譯系統(tǒng)是每一個復(fù)雜軟件所必需的,而它對應(yīng)的用戶界面則是編譯系統(tǒng)與用戶進(jìn)行交互的平臺。目前的編譯系統(tǒng)用戶界面大致可分為三種:(1)純字符的字符型編輯器界面;(2)圖形化界面;(3)圖形化與字符兼容的界面。
純字符型界面的特點(diǎn)是語言編寫靈活,與編譯系統(tǒng)直接相連,執(zhí)行效率較高;缺點(diǎn)是語句編寫是“流水賬式”的,程序長不便于閱讀,無法直接看出程序的語義,使用這種界面的往往只能是專業(yè)人士。
圖形化界面的特點(diǎn)是語句模塊化封裝,程序隱藏在后臺,從圖形界面上看,程序結(jié)構(gòu)清晰,便于用戶理解;缺點(diǎn)是需要多處理圖形部分[1],較之字符型編譯系統(tǒng)執(zhí)行效率較差,編譯系統(tǒng)設(shè)計(jì)比較復(fù)雜。
圖形化與字符兼容的界面形式兼容了字符型編輯器和圖形化界面的特點(diǎn),既有字符式編寫靈活的特點(diǎn),又具有模塊化顯示優(yōu)點(diǎn),本文討論如何設(shè)計(jì)基于圖形化和字符編輯器基礎(chǔ)之上的樹型編輯器系統(tǒng)。
編譯器的圖形化,本文采用樹型控件[2]實(shí)現(xiàn),一個語句模塊用一個樹型節(jié)點(diǎn)表示;字符編輯為輔助性語句顯示界面,用戶可以根據(jù)需要查看某一個節(jié)點(diǎn)語句。
樹型編輯器系統(tǒng)主要分為以下三大部分:
(1)用戶界面部分包括一個樹型編輯器和一個字符型編輯器,樹型編輯器用來顯示程序的大的流程,因?yàn)樗怯脴湫凸?jié)點(diǎn)圖標(biāo)顯示,用戶可以方便看出程序的流程和操作內(nèi)容;字符型編輯器用來顯示節(jié)點(diǎn)對應(yīng)的編程指令。
(2)程序模塊化處理部分包括程序指令的模塊化封裝、模塊指令的訪問和模塊程序運(yùn)行的控制[3]。
(3)編譯系統(tǒng)部分主要完成程序指令的執(zhí)行工作。
三部分的關(guān)系圖如圖1所示。
圖1 樹型編輯器系統(tǒng)關(guān)系圖
這里重點(diǎn)討論編譯系統(tǒng)之上的樹型編輯器系統(tǒng)部分。把樹型編輯器系統(tǒng)分為兩部分,即程序模塊化處理部分和界面處理部分。
程序模塊化處理部分,主要是把編譯器提供的程序指令模塊化,形成程序的主體模塊序列,用戶通過一個個模塊查看和訪問程序指令。樹型程序執(zhí)行時,程序指令仍然是通過編譯系統(tǒng)編譯、執(zhí)行,只是在程序指令執(zhí)行的同時,還必須處理模塊間的調(diào)用關(guān)系,并把執(zhí)行效果反映到樹型編輯器界面。
程序模塊化處理,首先要設(shè)計(jì)模塊結(jié)構(gòu)和包含的語句結(jié)構(gòu),根據(jù)需求定義一個語句模塊結(jié)構(gòu)對應(yīng)一個樹型節(jié)點(diǎn),定義如下:
利用上述的節(jié)點(diǎn)結(jié)構(gòu)定義和程序定義,實(shí)現(xiàn)程序指令的模塊化封裝。然后,設(shè)計(jì)用戶訪問接口,實(shí)現(xiàn)模塊化語句的添加、刪除、查詢等操作接口。界面處理部分通過這些接口完成各種操作。部分訪問接口定義如下:
程序模塊化處理,最后一個工作就是對程序指令執(zhí)行時的處理,這里包括兩方面的處理,一方面是程序執(zhí)行前對程序指令的打包,程序指令打包完成后傳到編譯系統(tǒng)編譯、執(zhí)行;另一方面是對模塊調(diào)用關(guān)系的處理,這里可以使用棧的方法實(shí)現(xiàn)這種調(diào)用關(guān)系[4]。
如果要考慮程序模塊化和程序指令建立對應(yīng)關(guān)系,可以把語句模塊節(jié)點(diǎn)設(shè)計(jì)成子程序的方式實(shí)現(xiàn),這樣在程序結(jié)構(gòu)設(shè)計(jì)上就會更加合理。
這里的用戶界面包括一個樹型編輯器和一個字符型編輯器。
樹型編輯器是用來顯示程序模塊的,一個樹型編輯器節(jié)點(diǎn)對應(yīng)一個程序模塊,程序模塊可以分為很多模塊類型,這些類型在樹型編輯器中可以用不同的圖標(biāo)表示,這樣通過樹型編輯器的圖形化界面就能很好地實(shí)現(xiàn)程序指令的圖形化功能。樹型編輯器界面如圖2所示。
圖2 樹型編輯器界面
字符編輯器主要是為用戶提供程序模塊指令的操作界面,用戶可以用它查看模塊的程序指令、修改模塊的程序指令。圖3為程序模塊指令。
圖3 程序模塊指令的操作界面
用戶界面部分的主要工作是定義程序模塊的分類,程序模塊劃分后用樹型編輯器的一個樹節(jié)點(diǎn)代表一個程序模塊類型,這樣根據(jù)設(shè)計(jì)編譯系統(tǒng)的需求,把所有的語義塊狀劃分后,就可以用樹型界面描述程序的實(shí)現(xiàn)流程。
用戶界面的其他工作就是定義界面上各種各樣的操作,它們的實(shí)現(xiàn)都是在程序模塊化處理和定義模塊分類兩部分基礎(chǔ)工作之上。
樹型程序執(zhí)行時,本文采用語句模塊預(yù)處理-編譯器的方式實(shí)現(xiàn),語句模塊預(yù)處理包括了兩方面工作:(1)根據(jù)樹型編輯器節(jié)點(diǎn)的順序處理程序的流程;(2)根據(jù)節(jié)點(diǎn)的語句合成程序的流程。上述工作處理完成后,把預(yù)處理好的語句傳送到底層的編譯系統(tǒng)從而完成整個程序的執(zhí)行流程。圖4為樹型程序執(zhí)行流程。
圖4 樹型程序執(zhí)行流程
基于“語句模塊預(yù)處理-編譯器”的設(shè)計(jì)方式可以方便快捷地實(shí)現(xiàn)編譯系統(tǒng)的可視化工作。此方法雖然從設(shè)計(jì)思路上講并不是什么復(fù)雜的方法,但它卻能把程序界面的可視化部分與底層的編譯系統(tǒng)有機(jī)地組織起來,因能作為一個獨(dú)立的處理部分,所以在實(shí)現(xiàn)可視化編程方面有其一定的優(yōu)點(diǎn)。
[1]魏蘭,李文鋒.基于可視化程序設(shè)計(jì)語言的編譯系統(tǒng)[J].計(jì)算機(jī)工程,2007,33(13):104-106.
[2]PETZOLD C.Windows程序設(shè)計(jì)[M].北京:北京大學(xué)出版社,1999.
[3]胡遠(yuǎn)方.面向?qū)ο缶幾g技術(shù)類庫體系結(jié)構(gòu)的研究和設(shè)計(jì)[D].北京:清華大學(xué),2000.
[4]張素琴,戴桂蘭.面向?qū)ο缶幾g類庫構(gòu)造[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2003,43(7):965.