预处理

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

相关

  • 据中医脏象学说,胆与、胃、小肠、大肠、膀胱、三焦合称“六腑”;与“肝”互为表里。主要功能为贮藏和排泄精汁(胆汁)、主决断和调节脏腑气机。胆与其他腑器不同之处,是不会和食物
  • 病理性赌博赌博成瘾或问题赌博(Ludomania)是一种持续需要赌博的心理,尽管患者明知其负面危害,又或希望停止。问题赌博的定义,在于赌徒或其他人受到伤害,而不是赌徒的行为会否构成伤害。对于
  • 约翰·詹姆斯·奥杜邦约翰·詹姆斯·奥杜邦(John James Audubon,1785年4月26日-1851年1月27日),美国画家、博物学家,法裔美国人,他绘制的鸟类图鉴《美国鸟类》被称作“美国国宝”。奥杜邦出生于海地,是一
  • BASICBASIC(来自英语:Beginner's All-purpose Symbolic Instruction Code的缩写)又译培基,是一种直译式程序设计语言。名称的字面意思为“初学者的全方位符式指令代码”,设计给初学者
  • 精子银行精子银行 (Sperm bank)是保存年轻男性精子的储存机构,精子放入银行暂时贮存,以备自己今后使用,或捐献他人使用。适用者包括夫妻两地分居者、少精症者或取精困难者、患病者、暂时
  • 蝉(学名:Cicadidae)是蝉总科下的一科,俗称“知了”(普通话: 蛭蟟 Zhi4 Liao3)或“借落子”。生活于世界温带至热带地区(已知纪录约2500种蝉)。一些分布于沙漠地区的种类,当体温过热时
  • 新表现主义新表现主义(英语:Neo expressionism)是1970年代末至1980年代中期,在美国、意大利、德国等地流行的具象绘画风格总称。它的最大特征,是以粗糙纹路传达强烈情感的具象表现,扭曲的形
  • 触摸屏触控萤幕(英语:Touchscreen),是可以接收触头(包括手指或者胶笔头等)等输入信号的感应式LED显示器、液晶显示、平板屏幕或电子墨水设备。当接触了屏幕上的图形按钮时,屏幕上的触觉反
  • 平方英寸平方英寸(平方吋)是一个英制的面积单位,其定义是“边长为1英寸的正方形的面积”。1平方英寸等于:平方尧米、平方佑米(Ym²) 平方泽米、平方皆米(Zm²) 平方艾米(Em²) 平方拍米(Pm²
  • 离水海岸离水海岸(英语:emergence coast),指沿海陆地上升或海平面下降的海岸。在沙岸地区,由于离水作用,沿海的浅水区露出海面,故海岸范围甚为宽广;而近岸的沙堤也因离水而成沙洲,如台湾西