编译原理-基本知识
表格管理 作用:用来记录源程序的各种信息以及编译过程中的各种状况 与编译前三阶段有关的表格有:符号表、常数表、标号表、分程序入口表、中间代码表等 符号表 用来登记源程序中的常量名变量名、发数组名、过程名等,记录它们的性质、定义和引用情况
标签 · 编译原理
表格管理 作用:用来记录源程序的各种信息以及编译过程中的各种状况 与编译前三阶段有关的表格有:符号表、常数表、标号表、分程序入口表、中间代码表等 符号表 用来登记源程序中的常量名变量名、发数组名、过程名等,记录它们的性质、定义和引用情况
目标代码生成 任务 把经过优化的中间代码转化成特定机器上的低级语言代码 目标代码的形式 绝对指令代码:可立即执行的目标代码。 汇编指令代码:汇编语言程序,需要通过汇编程序汇编后才能运行。 可重定位指令代码:先将各目标模块连接起来,确定变量、常数在主存中的位置,装入主存后才能成为可以运行的绝对指令代码。
优化 任务 对前面产生的中间代码进行加工变换,以期在最后阶段能产生更为高效的目标代码。 原则:等价变换 主要关注:公共子表达式的提取、合并已知量、删除无用语句、循环优化等。 循环优化:将循环内的语句优化为必需语句 优化举例
语义分析和中间代码生成 任务 对语法分析识别出的各类语法范畴,分析其含义,进行和初步翻译,产生介于源代码和目标代码之间的一种代码。 分为两阶段工作: 对每种语法范畴进行静态语义检查 若语义正确,就进行中间代码的翻译 中间代码 中间代码形式有:四元式、三元式、逆波兰式 中间代码生成举例:
任务 在词法分析的基础上,根据语言的语法规则,把单词符号组成的各类语法单位 语法规则 语言的规则,又称为文法:规定单词如何构成语法单位 语法单位 语法单位包括:短语、子句、语句、过程、程序 语法规则如何表示 BNF(巴科斯范式):A::=B|C -> 表示A定义为B或C 语法分析的方法 推导(Derive)和归约(Reduce) 推导 最左推导、最右推导 最右推导:每次 …
关于 任务 输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词 词法分析依照词法规则,识别出正确的单词,转换为统一规格,备用 单词 高级语言中有实在意义的最小语法单位,字符组成(关键字?) 包括: 基本字:void int float等 标识符:变量名,函数名等 整常数:例如 a*50 中的50 运算符:+ - * / =等 界限符:{} '' ; ()等 转换 …
编译程序的工作 词法分析 语法分析 语义分析和中间代码生成 优化 目标代码生成 上图中的语义分析一般来说会被融合进语法分析中