预处理

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

相关

  • 塔木德《塔木德》(希伯来文:תלמוד‎,Talmud,为教导或学习之意)是犹太教中认为地位仅次于《塔纳赫》的宗教文献。源于公元前2世纪至公元5世纪间,记录了犹太教的律法、条例和传统。其
  • 学术期刊学术期刊(英语:academic journal:scholarly journal)是一种经过同行评审的期刊,发表在学术期刊上的文章通常涉及特定的学科。学术期刊展示了研究领域的成果,并起到了公示的作用,其
  • 塞内卡卢修斯·阿奈乌斯·塞内卡或辛尼加 (拉丁语:Lucius Annaeus Seneca,约前4年-65年),古罗马时代著名的斯多亚学派哲学家、政治家、剧作家,生于罗马帝国西班牙行省科尔多瓦。曾任尼禄
  • 人间喜剧人间喜剧(法语:la Comédie Humaine),法国小说,作者为奥诺雷·德·巴尔扎克,一共有91部,包含了各式各样的长、中、短篇小说和随笔,总名为《人间喜剧》,《人间喜剧》的命名是受但丁长
  • 凯尔特海凯尔特海(英语:Celtic Sea; 爱尔兰语:An Mhuir Cheilteach; 威尔士语:Y Môr Celtaidd)是大西洋的一个海域,位于爱尔兰的南方。凯尔特海的东面连接着圣乔治海峡、布里斯托湾及英吉
  • 中国数学史中国数学史是指中国的数学发展史。中国传统数学称为算学,起源于仰韶文化,距今有五千余年历史,在周公时代,数乃是六艺之一。在春秋时代十进位制的筹算已经普及。著名日本数学史家
  • Urticaria荨麻疹(hives、urticaria)是一种很常见的皮肤病,俗称风团或风疹块,有的地区叫鬼风疙瘩,中医称瘾疹,客语称冷瘼,是一种皮肤过敏。症状是局部皮肤忽然成块地红肿,发痒或刺痒。病灶时常
  • 巴耶尔腓特烈·巴耶尔(丹麦语:Fredrik Bajer,1837年4月21日-1922年1月22日),丹麦作家、教育家、政治家,1908年获诺贝尔和平奖。
  • 蒙克国际研究中心蒙克国际研究中心是一个位于加拿大安大略省多伦多市,多伦多大学三一学院下设的一个学术研究机构。中心提供国际研究、公共政策、欧洲研究、亚太研究以及俄罗斯研究之硕士课程
  • 卡瑞托咖啡古罗马 · 中世纪 · 文艺复兴 · 现代威尼斯和威尼托 · 托斯卡尼 · 西西里 · 维琴察 · 罗马 (罗马饮品) · 那不勒斯面包 · 干酪 (PDO) · 油酥糕点 ·