随笔分类 - 编译原理
摘要:褚论 对于任何大型软件系统,如果设计者注意到该系统的基本抽象和接口,那么对这个系统的实现和理解就要容易的多。 下图,展示了一个典型的编译器的各个阶段,每个阶段由一至多个软件模块来实现。将编译器分解成这样多个阶段是为了能够重用他的各种构件。例如,要改变此编译器所生成的机器语言的目标机时,只要改变栈帧布
阅读全文
摘要:编译器在分析阶段把一个源程序划分成各个组成部分,并生成源程序的内部表现形式。这种内部表现称为中间代码。然后,编译器在合成阶段将这个中间代码翻译成目标程序。 分析阶段的工作是围绕这编译语言的“语法展开的”。一个程序设计语言的语法描述了该语言程序的正确形式。而该语言的语义定义了程序的含义。即每个程序运行
阅读全文
摘要:将多个步骤组合成趟 一个编译器的逻辑组成方式 在一个特定的实现中,多个步骤的活动可以被组合成一趟(pass). 每趟读入一个文件并产生一个输出文件。 比如:前段步骤中的语法分析、词法分析、语义分析、以及中间代码生成可以被组合一起成为一趟。代码优化可以作为一个可选趟。然后又一个为特定目标机生成代码的后
阅读全文
摘要:综合 :根据中间表示和符号表中的信息来构造用户期待的目标程序。 分析:把源程序,分解成多个要素,并在这些要素之上加上语法结构。然后,使用这个结构创建源程序的一个中间表示。如果分析部分检查出源程序没有按正确的语法构成,或者语义上不一致,就必须提供有用的信息。使用户可以按此来更改。还有收集有关源程序的信
阅读全文