编译原理学习笔记(一)编译原理概述

编译原理概述

1.1 计算机语言

机器语言: 0、1代码
汇编语言: 0、1代码与助记符:接近计算机硬件指令系统
高级语言: 语句定义数据、描述算法(程序)
如:C、SQL(数据定义、数据操作)
命令语言: 以功能封装为特征
翻译程序:将某一种语言描述的程序(源程序SP)翻译成等价的另一种语言描述的程序(目标程序OP)的程序
编译程序:高级语言程序→汇编/机器语言程序

1.2 编译程序总体结构

在这里插入图片描述

  • 词法分析:词法分析器又叫做扫描器完成词法分析
    功能:从左到右扫描源程序(字符串),并将其转换成单词(符号/记号—Token)串;同时查词法错误,进行标识符登记——符号表管理
    输入:字符串
    输出:(种别码,属性值)——序对
    属性值——token的机内表示
  • 语法分析:语法分析器 完成语法分析
    功能:实现“组词成句”:发现各级语法成分的组成和结构,指出语法错误,制导翻译
    输入:Token序列
    输出:语法成分
  • 语义分析:功能:分析由语法分析器给出的语法单位的语义
    获取标识符的属性:类型、作用域等
    语义检查:运算的合法性、取值范围等
    子程序的静态绑定:代码的相对地址
    变量的静态绑定:数据的相对地址
  • 中间代码生成:中间代码的特点:简单规范,机器无关,易于优化与转换
  • 代码优化:对代码进行等价变换以求提高效率——提高运行速度和节省存储空间
  • 目标代码生成:将中间代码转换成目标机上的机器指令代码或汇编代码
  • 表格管理:管理各种符号表(常数、标号、变量、过程、结构……),查、填(登记、查找)源程序中出现的符号和编译程序生成的符号,为编译的各个阶段提供信息,辅助语法检查、语义检查,完成静态绑定、管理编译过程
  • 错误处理:进行各种错误的发现、报告、纠正,以及相应的续编译处理(如:错误的定位与局部化)
    词法:拼写、定义、……
    语法:语句结构、表达式结构、……
    语义:类型不匹配、……

模块分类

  • 分析:词法分析,语法分析 ,语义分析
  • 翻译:中间代码生成,代码优化,目标代码生成
  • 辅助:符号表管理,出错处理

翻译的遍:根据系统资源的状况、运行目标的要求等,可以将一个编译程序设计成多遍扫描的形式,在每一遍扫描中,完成不同任务。遍可以和阶段相对应,也可无关