公司网站定位建议,三亚网络哪个好,中山企业手机网站建设,网站首页快照更新快一、编译、解释程序【回顾】
目的#xff1a;高级程序设计语言#xff08;汇编语言、高级语言#xff09;—【翻译】—机器语言 1-1、编译方式
将高级语言书写的源程序——目标程序#xff08;汇编语言、机器语言#xff09;
包含的工作阶段#xff1a;词法分…一、编译、解释程序【回顾】
目的高级程序设计语言汇编语言、高级语言—【翻译】—机器语言 1-1、编译方式
将高级语言书写的源程序——目标程序汇编语言、机器语言
包含的工作阶段词法分析、语法分析、语义分析、中间代码生成可省、代码优化可省、目标代码生成。 词法分析、语法分析、语义分析、目标代码生成 1-2、解释方式
包含的工作阶段词法分析、语法分析、语义分析。 【注意】 编译器、解释器都不可省略词法分析、语法分析、语义分析且顺序不可交换 1-3、真题
真题1 真题2 真题3 真题4 二、符号表
2-1、符号表的作用
不断收集、记录和使用源程序中一些相关符号的类型和特征等信息并将其存入符号表中。
记录源程序中各个字符的必要信息以辅助语义的正确性检查和代码生成。 2-2、真题
真题1 真题2 真题3 真题4 三、编译器的工作阶段
3-1、词法分析 考的较少
编译器的工作阶段第一阶段 输入源程序 输出记号流 词法分析过程依据的是语言的词法规则。把源程序看做一个字符串进行分析。
任务对源程序从前到后(从左到右)逐个字符地扫描从中识别出一个个“单词”符号。
示例 词法分析阶段的主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。 3-2、语法分析
输入记号流
输出语法树分析树
作用确定整个输入串是否构成一个语法上的正确的程序。
可以发现程序中的所有语法错误。 如括号不匹配结尾缺少分号...... 词法分析、语法分析本质上都是对源程序的结构进行分析。 3-3、语义分析
输入 语法树分析树
作用进行类型分析和检查。可以发现静态语义错误。 静态语义错误 在运行之前就能发现的错误。 如整数取余运算只能对整型数据进行运算若其运算对象中有浮点数就认为是类型不匹配的错误。 不能发现动态语义错误动态语义错误运行时才能发现
所以语义分析阶段不能发现程序中的所有语义错误。 3-4、目标代码生成阶段了解
生成编译器工作的最后一个阶段。
任务把中间代码变换成特定机器上的绝对指令代码。这个阶段的工作与具体的机器密切相关。 寄存器的分配工作处于目标代码的生成阶段。 3-5、真题
真题1 真题2 真题3 真题4 真题5 真题6 真题7 真题8 真题9 真题10 词法分析扫描字符识别单词 真题11 真题12 3-6、中间代码的生成
中间代码的共同特征与具体的机器无关。
可以将不同的高级程序语言翻译成同一种中间代码。
中间代码可以跨平台。 因为中间代码与具体的机器无关所以使用中间代码有利于进行与机器无关的优化处理和提高变异程序的可移植性。 3-6-1、常见的中间代码
后缀式三地址码三元式四元式树、图 3-6-2、真题
真题1 真题2 真题3 真题4 真题5 真题6 四、动态的语义错误
语义分析只能检测出程序的静态语义错误不能检测出动态的语义错误。
动态的语义错误要到程序运行时才能检测出来。 比如 除数为0. 循环条件错误导致死循环。 4-1、真题
真题1 真题2 语义错误 静态语义错误语义分析阶段检测出来动态语义错误 编译阶段检测所有的语法错误。 真题3 真题4 真题5