预处理

✍ dations ◷ 2025-04-04 11:22:30 #预处理
在计算机科学中,预处理器是程序中处理输入数据,产生能用来输入到其他程序的数据的程序。输出被称为输入数据预处理过的形式,常用在之后的程序比如编译器中。所作处理的数量和种类依赖于预处理器的类型,一些预处理器只能够执行相对简单的文本替换和宏展开,而另一些则有着完全成熟的编程语言的能力。一个来自计算机编程的常见的例子是在进行下一步编译之前,对源代码执行处理。在一些计算机语言(例如: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)使用。

相关

  • 罗马大学罗马大学(意大利语:Sapienza - Università di Roma),也译罗马智慧大学,亦称罗马第一大学或罗马一大,是意大利罗马市的一所著名大学。罗马大学为全欧洲学生注册人数最多的大学(若包
  • 多尔蒂县休多尔蒂县(Dougherty County)是位于美国佐治亚州西南部的一个县,面积867平方公里,县治奥尔巴尼。根据2000年美国人口普查,共有人口94,882。多尔蒂县成立于1853年12月15日,县名源自
  • 轻歌剧轻歌剧(Operetta)出现于十九世纪,也称配乐喜歌剧,是娱乐性较强的一类歌剧。其结构短小,音乐风格轻松活泼,情节多取自于现实生活,偏重讽刺揭露。采用独唱、重唱、合唱、舞蹈和说白
  • Z-DNAZ-DNA又称Z型DNA,是DNA双螺旋结构的一种形式,具有左旋型态的双股螺旋(与常见的B-DNA相反),并呈现锯齿形状。Z-DNA为三种具生物活性的DNA双螺旋结构之一,另两种为A-DNA与B-DNA。Z-D
  • 晶系晶体通常可以分为七个不同的晶系,即立方晶系、六方晶系、四方晶系、三方晶系、正交晶系、单斜晶系、三斜晶系。其中的立方晶系具有各向同性,属于高级晶族。晶系的特征与细分关
  • 城市建成区建成区(英语:built-up area)一般指城市中的城市化区域。在中国大陆,《城市规划基本术语标准》(GB/T 50280-98)将“城市建成区(urban built-up area)”定义为“城市行政区内实际已成
  • 保罗·科克姆保罗·布鲁斯·科克姆(英语:Paul Bruce Corkum,1943年10月30日-),加拿大物理学家。在20世纪80年代,他开发了一种原子(即等离子生产)电离的模型,并在此基础上提出了一种新的方法制作X射
  • 智慧智慧是高等生物所具有的基于神经器官(物质基础)一种高级的综合能力,包含有:感知、知识、记忆、理解、联想、情感、逻辑、辨别、计算、分析、判断、文化、中庸、包容、决定等多种
  • 台北新公园二二八和平公园,原名为台北公园,后改称台北新公园,是一座位于台湾台北市中正区的公园,北起襄阳路、南至凯达格兰大道、西为怀宁街、东为公园路,占地71,520平方米,邻近总统府、外交
  • 巴克莱银行巴克莱银行(Barclays,LSE:BARC、NYSE:BCS)是英国第二大银行,具有逾300年历史,是英国最古老的银行,其历史可以追溯到1690年。巴克莱是全世界第一家拥有ATM的银行,并于1966年发行了全英