预处理

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

相关

  • 红霉素红霉素(拉丁语:Erythromycin)是一种大环内酯类的抗生素,可用于治疗呼吸道感染、皮肤感染(英语:skin infections)、衣原体菌感染(拉丁语:chlamydia infections),以及梅毒。本品也可用于
  • 理性主义理性主义、欧洲理性主义(Rationalism)是建立在承认人的理性可以作为知识来源的理论基础上的一种哲学方法,高于并独立于感官感知。理性主义最早的发源地是在英国,一般认为是随着
  • 杂食性动物杂食性是指吃植物、动物的一类的动物,这类动物什么都能吃,它们不用依靠单一类型的食物如植物或动物来维持生命,却可以只进食单一类型的食物来维持生命,因此对周遭环境有着较强的
  • 底物水平磷酸化底物水平磷酸化(英语:substrate-level phosphorylation)是指一类ADP或其他核苷二磷酸的磷酸化作用与底物的脱氢作用直接相偶联的反应过程。除了发生在糖酵解和三羧酸循环之中的
  • 成br /铁br /纪成铁(Siderian,符号PP1)是地质时代中的一个纪,开始于同位素年龄2500±0百万年(Ma),结束于2300±0Ma。成铁纪的名称来自于希语sideros“铁”,因这个时期是世界上形成特大型铁矿田,出现
  • 理型理型论(英语:theory of Forms,或theory of Ideas),西方哲学对于本体论与知识论的一种观点,由柏拉图提出。理型论认为,在人类感官能够感受到事物的共相之上,存在着一种抽象的完美理型
  • 不完整的比较不完整的比较(incomplete comparison)是一种非形式谬误,系透过不完整而难以驳斥的断言证成观点。然而,正因为其不完整,因而也无法有效证成观点。“甲公司的产品比乙公司的产品更
  • 武维华武维华(1956年9月-),生于山西临汾,原籍山西孝义,中国植物细胞生理及分子生物学家,中国农业大学教授,中国科学院院士。现任第十三届全国人大常委会副委员长、九三学社中央委员会主席
  • 艾尔·戈尔小艾伯特·阿诺德·“阿尔”·戈尔(英语:Albert Arnold "Al" Gore, Jr.,1948年3月31日-),美国政治家,曾于1993年至2001年间在比尔·克林顿执政时期担任美国副总统。2000年美国总统
  • 校验码校验码通常是一组数字的最后一位,由前面的数字通过某种运算得出,用以检验该组数字的正确性。常见的校验码有中华人民共和国居民身份证的最后一位,ISBN号码的最后一位等。不同的