P1
1.翻译程序
翻译程序指的是这样一个程序,它能够把某一种语言程序(源语言程序)改造成另一种语言程序(目标语言程序),而(源语言程序)(目标语言程序)两者在逻辑上是等价的
2.编译程序
将高级程序设计语言 翻译成 逻辑上等价的低级语言 (汇编语言,机器语言) 的翻译程序。
从高级语言转换为低级语言,然后运行计算。
先编译 后执行
3.解释程序
边解释边执行
接受高级语言的语句输入,进行解释并控制计算机执行,得到结果。
P2
1.五个阶段 词法分析 语法分析 语义分析 优化 目标代码生成
2.词法分析
- 语法分析
4.语义分析
5优化
6.目标代码生成
P6
1.符号表
2.遍
从外部介质读取源件经过加工获得某种结果并将其送回外部介质的过程,称为一遍。
3.编译前端与后端
编译前端:由与源语言有关但与目标机无关的那些部分组成。包括词法分析、语法分析、语义分析与中间代码生成。
编译后端:包括编译程序中与目标机有关的那些部分,有代码优化和目标代码生成。
P12
1.程序语言主要由语法和语义两方面定义
2.程序语言的每个组成成分都有(抽象的)逻辑 和 计算机实现两方面的意义
3.一个程序语言的基本功能是描述数据和对数据的运算。
4.一个上下文无关文法G包括四个组成部分:一组终结符号,一组非终结符,一个开始符号,以及一组产生式。
5.上下文无关文法G(VT,VN,S,£)
形式上定义一个上下文无关文法G是一个四元式(VT,VN,S,£)其中
VT
VN
S
£
6.语句,从功能上说语句大体可分执行性语句 和 说明性语句两大类,
P29
4.句型
句子
语言
一个语言的 文法 不是唯一的
P30
最左推导:
最右推导:
7.语法分析树与二义性
8.文法分成四种类型:0,1,2,3型
它们都由四部分组成,但对产生式的限制有所不同
0型(短语文法,图灵机):
1型(上下文有关文法,线性界限自动机, 非确定的 下推自动机)
2型(上下文无关文法, 非确定下推自动机):
3型(正规文法,正规式,有限自动机):
P37
1.词法分析的任务是:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。
因此,词法分析是编译的基础。
执行词法分析的程序称为词法分析器。
2.程序语言的单词符号一般分为五种:
关键字
标识符
常数
运算符
界符
3.确定有限自动机(DFA)是一个五元式 DFA=(S, Σ,δ,s0, F)
4.一个非确定有限自动机(NFA)是一个五元式 M= (S, Σ,δ,S0, F)
P66 第4章 语法分———自上而下分析
- 一类是自上而下分析法 a. 递归下降 LL(1) b.预测分析
另一类为自下而上分析法 a. 算符优先文法 b.规范归约
2.FOLLOW(B)的构造
P83 第5章 语法分析 ———自下而上分析
所谓自下而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上“归约”,直到根结。
自下而上分析的关键问题是寻找可归约串。
对“可归约串”概念的不同定义,就形成了不同的自下而上的分析方法。
在算符优先分析法中我们用“最左素短语” 来刻画“可归约串”,
在“规范归约”中, 则用“句柄” 来刻画“可归约串”
P136
第六章 属性文法和语法制导翻译
1.属性文法
属性文法是在上下文无关文法的基础上为每个文法符号(终结符或非终结符)配备若干个相关的“值”(称为属性)。
这些属性代表与文法符号相关的信息,例如它的类型、值、代码序列、符号表内容等等。
属性和变量一样,可以进行计算和传递。
2.属性一般分为两类:综合属性和继承属性。
综合属性用于“自下而上”传递信息,
继承属性用于“自上而下”传递信息。
3.基于属性文法的 语法制导翻译法
4.如果一属性文法不存在属性之间的循环依赖关系,那么该文法为良定义的。
为了设计编译程序,我们只处理良定义的属性文法。
P166
第七章 语义分析和中间代码的产生
1.紧接在词法分析和语法分析之后,编译程序要做的工作是进行静态语义检查和翻译。
2.中间语言的基本结构:
逆波兰表示(后缀式)
图表示法(DAG 和抽象语法树),
三地址代码(四元式、三元式、间接三元式)