建立宏加工程序后,用户就可以方便地定义和使用自己所需的宏指令或宏语句。这不仅能简化应用程序的编写,而且有助于软件人员研究和移植有关的软件。例如,利用宏指令或宏语句设计虚拟机,研究新的语言,以及生成带有变化成分的软件等。
宏指令的定义、调用和扩展 定义宏指令时,要给出它的名字、格式、参数和等价的指令序列,即由开始行、指令序列和结束行组成。开始行中的操作码标明宏指令定义开始;标号字段给出宏指令的名字;操作对象字段给出宏指令的参数;结束行中的操作码标明宏指令定义结束。在开始行和结束行之间,给出用来定义宏指令的指令序列,其中有些指令可出现开始行中列出的参数。
程序中可按宏指令的格式调用有定义的宏指令。宏指令中的操作码字段给出宏指令的名字;操作对象字段中给出用户所需的参数。
宏加工程序将程序中出现的宏指令扩展成等价的指令序列,并进行参数替换。
宏语句的定义、调用和扩展,与宏指令的情形类似。为简单起见,分别将其统称为宏定义、宏调用和宏扩展。
实现过程 宏加工程序通常采用两遍算法实现:第一遍收集宏定义的信息;第二遍实现宏扩展。在第一遍扫描中,遇到宏定义时,应把名字、格式、参数等信息以及随后的等价的指令或语句序列记录到宏定义表中。对于源程序中宏定义以外的部分,将不加改变地复写到中间结果程序区中。第二遍扫描第一遍所产生的中间结果程序。遇到宏调用时,则将宏定义表中相应的等价指令或语句序列复写到目标程序区中。复写过程中,要用宏调用中的实在参数替换宏定义中的形式参数。
如果限制每个宏调用只能调用前面已定义的宏指令或宏语句,那么,这种宏加工程序的实现算法可合并成一遍完成。
功能较强的宏加工程序还可增加嵌套宏定义、嵌套宏调用或条件宏加工等功能。如果宏定义中含有另外的宏定义,则称为嵌套宏定义。如果宏定义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.
本文发布于:2022-10-15 13:45:26,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/78/285548.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |