预处理

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

相关

  • 波粒二象性在量子力学里,微观粒子有时会显示出波动性(这时粒子性较不显著),有时又会显示出粒子性(这时波动性较不显著),在不同条件下分别表现出波动或粒子的性质。这种称为波粒二象性(wave-par
  • 后金后金第1位大汗清朝追尊皇帝努尔哈赤 (满语:ᠨᡠᡵᡤᠠᠴᡳ,穆麟德:nurgaci,太清:nurgaqi ;1559年2月21日-1626年9月30日),爱新觉罗氏,出身建州左卫都指挥使世家旁系,祖父觉昌安被明朝授
  • 肝细胞癌肝细胞癌 (Hepatocellular carcinoma,简称HCC)是成年人中最常见类型的慢性肝癌,并且在肝硬化的患者中也是最常见的死亡原因。它发生在慢性肝脏炎症的环境中,并且与慢性病毒性肝
  • 伊红-Y伊红-Y 是的伊红的一种,是一种生物染色剂,呈淡黄色。伊红-Y是荧光素的四溴衍生物,化学式是C20H6Br4Na2O5。常用在苏木精-伊红染色中,另和百里酚共同用于防止水溶液长霉。铁及含
  • 低血钙低钙血症或低血钙症(Hypocalcaemia)系指血清中的钙离子浓度过低的状况,正常比例为 2.1 至 2.6 mmol/L(约为 8.8 到 10.7mg/dl,4.3 到 5.2 mEq/L),如果低于 2.1 mmol/L,就会认定为低
  • 植物考察植物考察(英语:Botanical expedition)是形容为了研究一特定区域的植物所进行的科学考察旅行。一个植物考察的目的可能是设计在探索某一种特定植物群,又或可以是专注于讨论一个地
  • 费尔南多·恩里克·卡多佐费尔南多·恩里克·卡多佐(葡萄牙语:Fernando Henrique Silva Cardoso,昵称FHC,1931年6月18日-),巴西社会学家与政治家,曾于1995年-2003年任巴西总统。卡多佐出生于里约热内卢,其妻为
  • 波克霍利斯波克霍利斯(英语:Bakenranef),(?—约公元前720年),古埃及法老,第二十四王朝君主。继承特弗纳赫特之位。又名贝肯雷内夫或巴肯勒内夫。希腊人称之为菩科利斯。凭借古埃及历史上的六位
  • 亚里士多德物理学古希腊哲学家亚里士多德(公元前384年-前322年)开创许多 有关物理学本质的理论。这些理论涉及到他所描述的四大元素。他阐明这些元素间的密切联系,它们的动力,它们对地球的影响,以
  • 泛日耳曼主义泛日耳曼主义是19世纪于德国流行的一种泛民族主义。德意志帝国境内以日耳曼族为多数,少数斯拉夫人和犹太人。德意志帝国政府于普法战争后害怕法国会出兵报复,于是和其他欧洲国