宏加工程式

把源程式中的宏指令或宏語句擴展成等價的、預先定義的指令或語句序列的翻譯程式。 \n宏指令或宏語句,實際上是按規定格式書寫的某一源程式段的縮寫,主要是根據用戶自己特定的需要而設定的。它利用程式設計語言所提供的指令或語句來定義。系統也可以預先定義一些常用的宏指令或宏語句,以便用戶直接調用。

宏加工程式

正文

建立宏加工程式後,用戶就可以方便地定義和使用自己所需的宏指令或宏語句。這不僅能簡化應用程式的編寫,而且有助於軟體人員研究和移植有關的軟體。例如,利用宏指令或宏語句設計虛擬機,研究新的語言,以及生成帶有變化成分的軟體等。
宏指令的定義、調用和擴展 定義宏指令時,要給出它的名字、格式、參數和等價的指令序列,即由開始行、指令序列和結束行組成。開始行中的操作碼標明宏指令定義開始;標號欄位給出宏指令的名字;操作對象欄位給出宏指令的參數;結束行中的操作碼標明宏指令定義結束。在開始行和結束行之間,給出用來定義宏指令的指令序列,其中有些指令可出現開始行中列出的參數。
程式中可按宏指令的格式調用有定義的宏指令。宏指令中的操作碼欄位給出宏指令的名字;操作對象欄位中給出用戶所需的參數。
宏加工程式將程式中出現的宏指令擴展成等價的指令序列,並進行參數替換。
宏語句的定義、調用和擴展,與宏指令的情形類似。為簡單起見,分別將其統稱為宏定義、宏調用和宏擴展。
實現過程 宏加工程式通常採用兩遍算法實現:第一遍收集宏定義的信息;第二遍實現宏擴展。在第一遍掃描中,遇到宏定義時,應把名字、格式、參數等信息以及隨後的等價的指令或語句序列記錄到宏定義表中。對於源程式中宏定義以外的部分,將不加改變地複寫到中間結果程式區中。第二遍掃描第一遍所產生的中間結果程式。遇到宏調用時,則將宏定義表中相應的等價指令或語句序列複寫到目標程式區中。複寫過程中,要用宏調用中的實在參數替換宏定義中的形式參數。
如果限制每個宏調用只能調用前面已定義的宏指令或宏語句,那么,這種宏加工程式的實現算法可合併成一遍完成。
功能較強的宏加工程式還可增加嵌套宏定義、嵌套宏調用或條件宏加工等功能。如果宏定義中含有另外的宏定義,則稱為嵌套宏定義。如果宏定義A中出現宏調用,那末在擴展A的宏調用過程中,又要進一步轉去擴展另外的宏調用。這種情形稱為嵌套宏調用。如果宏加工程式能根據宏調用中的參數,有選擇地把宏調用擴展成不同的指令或語句序列,則稱為條件宏加工。
參考書目
 M. Campbell-Kelly, An Introduction to Macros,MacDona ld.London,1973.
 P. J. Brown,Macro Processor and Techniques for Porable Software, Wiley, London,1974.
 A. J. Cole, Macro Processor,Cambridge Univ.Pr.,Cambridge,1976.

配圖

相關連線

相關詞條

相關搜尋

熱門詞條

聯絡我們