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