编译器:也是一个程序,把源程序转变为等价的另一种源程序(比如汇编==机器语言)
词法分析
变量,函数都是标识符。
符号表-标识符相关的各种属性,贯穿编译的各个过程,每个过程都可能添加修改表数据:
若是变量名,名称,类型,kind种属(简单,复杂),值,存储位置,作用域
若是过程名,名称,类型,参数,返回值类型。
语法分析-建立语法树-先根中根后根
语义分析
存储分配
二、编译基础:形式语言与自动机
字母表:有穷非空字符集,可识别符合{a-z,A-Z,0-9
字符串:字母表中符合组成的任何有穷序列
字符串运算符
连接:xy称为x,y的连接,比如int x
积
闭包:A*=A0 u A1 u A2... //任意长度的集合,A0={e} 空串
正闭包:A+ = A* - A0
对于任何一个句子,存在两个过程,都以语法为规则。
读--识别过程--编译的过程
写--推导过程--书写源程序
集合图论==离散数学,是形式语言的基础,形式语言是数学范畴。是编译的基础
文法是个四元组G=(Vn非终结符,Vt终结符,P产生式,S开始符号)