五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化、目标代码生成。每一个阶段在功能上是相对独立的,它一方面从上一个阶段获取分析的结果来进行分析,另一方面由将结果传递给下一个阶段。由编译程序的五个阶段就对应了编译系统的结构。其中词法分析器利用超前搜索、状态转换等方法,将源程序转化成为一个一个的单词符号二元式。一般程序语言的单词符号包括关键字、运算符、常数、标识符和界符。语法分析器将这些单词符号作为输入,对它进行语法分析。语法分析分为两种方法:自上而下分析法和自下而上分析法。针对不同程序语言的语法规则可以采取不同的分析方法,当然两种方法也可以同时使用。语法分析器把语法单元作为输入供语义分析器使用。一般的语义分析器主要采用的是语法制导方法,即在语法分析的同时进行语法分析,并产生一定的语义动作,来生成中间代码。上面三个过程可以与硬件无关,而接下来的优化器和目标代码生成器是针对某一种处理器而言的。代码优化是将语义分析生成的中间代码进行优化,产生执行效率更高的代
4
f码。目标代码生成器最终生成可以在某种机器上运行的机器语言或者汇编语言。在整个编译过程中还包括对表格的操作和对错误的处理,这些也都是非常重要的环节。
5
f下图给出了编译系统的结构框图
词法分析器
表
出
单词符号
格
错
语法分析器
管
处
语法单元
理
语义分析与中间代码生成器
理
优化器
中间代码
目标代码生成器
中间代码
目标代码
二、总体设计方案及主要设计原理21、单词符号及种别表示
6
f单词符号mai
i
tfloatdoublecharifelsedowhilelld
εdddεeεddε
种别编码12345678910202122232425262728293031323334353637
单词值
内部字符串二进制数值表示
22、语法结构定义
程序mai
语句块
7
f语句块‘‘语句串’’程序用括号括起来语句串语句语句
语句赋值语句条件语句循环语句赋值语句ID表达式赋值语句用””号条件语句if条件语句块条件怎么没有括号,(自己加1个)循环语句do语句块while条件条件表达式关系运算符表达式表达式项项项项因子因子因子因子ID
um表达式
umε数字数字数字εeε数字数字εID字母字母d数字字母abc…zABC…Z数字012…9关系运算符
23、主要算法
231、词法分r