複製鏈接
請複製以下鏈接發送給好友

宏加工程序

鎖定
把源程序中的宏指令或宏語句擴展成等價的、預先定義的指令或語句序列的翻譯程序。 \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.