这个学期的编译原理课上了已经有3个星期了,发现上到后面就是有一种坐火箭的感觉,究其原因 是前面的基本知识忘了哈。课本中的知识基本上要依靠前面的一些概念,符号的定义来完成的。因此在这里跟着中南大学的一个mooc将涉及的基本概念补上。 所谓”浮沙之上,勿筑高台“, 前面欠的债后面还是要还的。基础知识,是所有高级的知识的基础。
高级语言
- 传值方式
- 传值
- 传地址
- 传名??
- 存储管理
- 静态存储
- 动态存储
程序语言的定义
一个程序语言是一个记号系统, 其完整的定义包括语法和语义 (形式语言)
- 语法:一组规则,可以产生和形成一个合适的程序
- 语义: 什么样的符号列是合法的
基本概念
-
字母表
元素的非空有限集合(Σ )
字母表中的元素称为:符号
字母表包含了语言中所出现的所有符号
-
符号串
符号的有穷序列
不含元素的: ε
-
符号串的运算
-
符号的串的长度: 含有字符的个数, 记号: |x| ,
|ε|=0 空符号串的长度为0
-
符号串连接
若x,y 是定义在Σ上的符号串,则 xy称为x和y的连接,xy也是Σ上的符号串
εx = xε = x (关于空符号串的连接)
-
符号串集合的乘积
令 A,B为符号串集合,定义符号串集合的乘积AB = {xy|
x,y 来自于A,B} -
符号串集合的方幂
符号串集合自身的乘积
-
符号串集合的正闭包
-
符号串集合的自反闭包
-
文法
- 文法: 定义或者描述语法结构的一组形式规则
- 终结符 (不可以往下推导了)
- 非终结符
- 上下文无关文法 (开始符号,产生式,终结符,非终结符)
补漏
离散数学: 闭包相关知识
参考
-
中南大学 《编译原理》
-
《编译原理》清华大学出版社