编译程序的组织 (2).ppt
1.2 编译的基本过程编译的基本过程编译的核心就是机器翻译。她是一位新教师 翻译为英文首先识别句子中的单词:首先识别句子中的单词:她 是 一位 新 教师。第二步进行语法分析 “她 是 一个 新 教师”是一个符合主系表结构的句子。第三步:语义翻译 她是一个新教师。She is a new teacher.1.2 编译的基本过程编译的基本过程main()float position,initial,rate;scanf(“%d,%d,%d”,&position,&initial,&rate);position=initial+rate*60;.;C语言程序 首先,要区分出代码中的一个个单词,然后依据语法规则分析句子语法结构是否正确,如有错给出提示信息,否则分析他们所表达的意思,生成与源语言程序等价的目标程序。识别单词的词法分析、分析语法结构的语法分析、进行语义解释的语义分析、生成目标代码的代码生成。在编译系统中,在编译系统中,目标代码一般是指用汇编语言或机器语言呈现。编译过程通常划分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成六个阶段。目标代码生成器目标代码生成器目标代码生成器目标代码生成器代码优化器代码优化器代码优化器代码优化器语义分析与中间代码生成器语义分析与中间代码生成器语义分析与中间代码生成器语义分析与中间代码生成器语法分析器语法分析器语法分析器语法分析器表表表表 格格格格 管管管管 理理理理 器器器器 出出出出 错错错错 处处处处 理理理理 器器器器中间代码中间代码中间代码中间代码中间代码中间代码中间代码中间代码目标程序目标程序目标程序目标程序语法单位语法单位语法单位语法单位单词符号单词符号单词符号单词符号词法分析器词法分析器词法分析器词法分析器源程序源程序源程序源程序请参阅请参阅P8图图1.6词法分析器词法分析器词法分析器词法分析器源程序源程序源程序源程序(1)(inttoreal 60 -t1)(2)(*id3 t1 t2)(3)(+id2 t2 t3)(4)(:=t3 -id1)代码优化代码优化(1)(*id3 60.0 t1)(2)(+id2 t2 id1)代码生成代码生成MOVF id3,R2MULF#60.0,R2MOVF id2,R1ADDF R2,R1MOVF R1,id1vmain()v float position,initial,rate;v scanf(“%d,%d,%d”,&position,&initial,&rate);v position=initial+rate*60;v .;vid1=id2+id3*60:=+*idid1 1idid2 2idid3 36060inttorealinttoreal:=+*idid1 1idid2 2idid3 36060中间代码生成中间代码生成词法分析词法分析语法分析语法分析语义分析语义分析变换:翻译变换:翻译变换:翻译变换:翻译变换:翻译变换:翻译符号表符号表 position initial rate 1234四元式的形式为:四元式的形式为:(运算符,运算对象运算符,运算对象1,运算对象,运算对象2,结果,结果)。