编译原理复习3
2017-11-21 23:47
211 查看
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。
群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
输出:单词符号
标识符:表示各种名字,如变量名、数组名和过程名
常数:各种类型的常数
运算符:+,-,*,/,……
界符:逗号,分号,括号,空白
重点是:
状态转换图
状态转换图到代码
正规表达式是表示正规集一种方法
一个字集合是正规集当且仅当它能用正规式表示
1)ϵ 和∅ 都是Σ 上的正规式,它们所表示的正规集为{ϵ} 和∅
2)任何a∈Σ ,a 是Σ 上的正规式,它所表示的正规集为{a}
3)假定e1 和e2 都是Σ 上的正规式,它们所表示的正规集为L(e1) 和L(e2) ,则
i) (e1|e2) 为正规式,它所表示的正规集为L(e1)⋃L(e2)
ii) (e1⋅e2) 为正规式,它所表示的正规集为L(e1)L(e2)
iii) (e1)∗ 为正规式,它所表示的正规集为(L(e1))∗
仅由有限次使用上述三步骤而定义的表达式才是Σ 上的正规式,仅由这些正规式表示的字集才是Σ 上的正规集
若两个正规式所表示的正规集相同,则称这两个正规式等价
如,b(ab)∗=(ba)∗b
上图是NFA转DFA的重要工具
DFA状态的划分很重要:
群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
词法分析
这章算是正式进入编译原理的编译程序中的一环了吧。。。对于词法分析器的要求
功能
输入:源程序输出:单词符号
单词符号的种类
基本字:如for,while标识符:表示各种名字,如变量名、数组名和过程名
常数:各种类型的常数
运算符:+,-,*,/,……
界符:逗号,分号,括号,空白
词法分析器的设计
将不同的单词符号记为不同的状态,然后通过有限状态自动机进行状态转移。重点是:
状态转换图
状态转换图到代码
正规表达式与有限自动机
正规式和正规集
正规集可以用正规表达式(简称正规式)表示正规表达式是表示正规集一种方法
一个字集合是正规集当且仅当它能用正规式表示
正规式和正规集的递归定义
对给定的字母表Σ1)ϵ 和∅ 都是Σ 上的正规式,它们所表示的正规集为{ϵ} 和∅
2)任何a∈Σ ,a 是Σ 上的正规式,它所表示的正规集为{a}
3)假定e1 和e2 都是Σ 上的正规式,它们所表示的正规集为L(e1) 和L(e2) ,则
i) (e1|e2) 为正规式,它所表示的正规集为L(e1)⋃L(e2)
ii) (e1⋅e2) 为正规式,它所表示的正规集为L(e1)L(e2)
iii) (e1)∗ 为正规式,它所表示的正规集为(L(e1))∗
仅由有限次使用上述三步骤而定义的表达式才是Σ 上的正规式,仅由这些正规式表示的字集才是Σ 上的正规集
若两个正规式所表示的正规集相同,则称这两个正规式等价
如,b(ab)∗=(ba)∗b
上图是NFA转DFA的重要工具
DFA状态的划分很重要: