预处理

✍ dations ◷ 2024-09-20 09:09:27 #预处理
在计算机科学中,预处理器是程序中处理输入数据,产生能用来输入到其他程序的数据的程序。输出被称为输入数据预处理过的形式,常用在之后的程序比如编译器中。所作处理的数量和种类依赖于预处理器的类型,一些预处理器只能够执行相对简单的文本替换和宏展开,而另一些则有着完全成熟的编程语言的能力。一个来自计算机编程的常见的例子是在进行下一步编译之前,对源代码执行处理。在一些计算机语言(例如:C语言)中有一个叫做预处理的翻译阶段。词法预处理器是最低级的预处理器,因为它们只需要词法分析,也就是说,它们在语法分析处理之前,根据用户定义的规则,进行简单的词法单元替换。典型的词法预处理器产生宏替换,包含其他文件的文本,并且条件性地编译或者包含文件。最常见的例子是C预处理器,采用以'#'为行首的指示。因为它不知道底层语言,它的使用被批评并且它的许多功能被其它语言直接内建。例如,宏替换被显式内联和模板替代,包含变为编译期导入(compile-time import,这需要在目标代码中预先保存类型信息,使这个功能无法改进一个语言);条件编译被if-then-else和死代码消除替代。其他词法预处理器包括一般用途的m4,最常用的跨平台构建系统,比如autoconf,和开源的宏处理器GEMA,操作上下文模式。句法预处理器是由Lisp家族语言引进的。它们的作用是根据若干用户定义的规则转换语法树。对于某些程序语言,这些规则是使用同一种语言来写的(compile-time reflection)。这就是Lisp和OCaml的情况。某些编程语言依靠一个完全的外部语言来定义转换,例如XSLT处理器处理XML的方式,或与静态类型的对应语言CDuse。静态处理器常被用来自定编程语言的语法,并透过增加新的primitives或嵌入特定领域语言(Domain-Specific Programming Language)到一般用途的语言里来扩展。关于自定义语法的一个好例子是在OCaml编程语言里两个不同语法的存在。程序可能平常地由“正常语法”或“校正过的语法”写成,并且按需求由两者之一进行程序优化类似地,一些OCaml语言写成的程序借由新运算符的增加来自定化语言的语法。对于从宏扩展语言最好的示例可在LISP语言家族里找到。这种语言本身就是简单的动态类型核心模块,Scheme或Common Lisp的标准分配允许了命令或面向对象的程序编辑,静态类型亦如此。几乎所有这些特性都由语法预处理运行,虽然它的“宏扩展”编译阶段由LISP的编译器处理这点很值得一提就是。这仍然可以视为预处理的一种形式,因为它在编译阶段前就进行了。类似地,静态检查、类型安全正规表式或代码生成可能透过宏被加入到OCaml的语法和语义里,如同微线程(亦称为协程或fibers)、单子或透明的XML操作。任何“一般目的预处理器”,例如M4,都可以当成模版引擎(template engine)使用。

相关

  • 广泛性发展障碍广泛性发育障碍(Pervasive Developmental Disorder;简称PDD),又称社交障碍、发育迟缓,是一个与特殊性发育障碍(Specific Developmental Disorders;SDD)相对的名词,专指一组五种与多种
  • 巫山人巫山人(学名:Homo erectus wushanensis)是1984年在三峡地区龙骨坡遗址发现的史前人类,出土了人类门齿和一段人类下颌骨,颌骨上带有两个牙齿。此外在同一土层中发现了人类加工或使
  • 中央纵裂中央纵裂(Medial longitudinal fissure,有时又称脑裂,或称脑纵裂),是大脑中线的明显沟槽,将大脑分为左右半球。中央纵裂中有大脑镰分隔,大脑镰是一层由硬膜形成的构造。纵裂中有胼
  • 李卓皓李卓皓(英语:Choh Hao Li,1913年4月21日-1987年11月28日),广东广州人,原籍广东番禺,生物学家。1933年毕业于金陵大学(1952年与南京大学合并)生物系。1935年移居美国,在柏克莱加州大学获
  • 止痛药物镇痛药(Analgesic)是指能缓解痛的一类药物。该词起源于希腊语中的"an"(意即“没有”)和"algos"(意即“痛”)。镇痛药通过不同的机理作用于中枢和周围神经系统,对痛觉中枢有选择性抑
  • 潜在语义索引潜在语义索引是一种搜索方法,也是一种索引。通过奇异值分解来识别非结构化的文本集合中的具有联系关系的模式。一般认为,在同样的语境中使用的词语一般具有相似的含义,LSI就是
  • 咬指甲咬甲癖是在紧张、压力、饥饿或无聊状态下啃咬指甲或趾甲的习惯性行为。有时也是心理或情绪失控的症状。这是一种强迫性、甚至是无意识的行为习惯,患者有时无法或难以意识到自
  • 牛蒡属约10种,详见内文牛蒡属(学名:Arctium),是菊科下的一个属,全球约有10种,分布欧亚温带地区,中国国内约有2种,均供药用。本属的模式种为牛蒡(Arctium lappa)。牛蒡属中包含多年生或二年生
  • 马公市马公市(台湾话:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",Helvetica,Arial,sans-serif} Má-k
  • 白云鄂博铁矿白云鄂博铁矿是位于中国内蒙古自治区中部的一座大型露天铁-稀土矿床,1927年由著名地质学家丁道衡发现。白云鄂博位于乌兰察布草原上,北距蒙古国106公里,南距包头市市区149公里