先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。

群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理


词法分析

这章算是正式进入编译原理的编译程序中的一环了吧。。。

对于词法分析器的要求

功能

输入:源程序

输出:单词符号

单词符号的种类

基本字:如for,while

标识符:表示各种名字,如变量名、数组名和过程名

常数:各种类型的常数

运算符:+,-,*,/,……

界符:逗号,分号,括号,空白

词法分析器的设计

将不同的单词符号记为不同的状态,然后通过有限状态自动机进行状态转移。

重点是:

  • 状态转换图
  • 状态转换图到代码

正规表达式与有限自动机

正规式和正规集

正规集可以用正规表达式(简称正规式)表示

正规表达式是表示正规集一种方法

一个字集合是正规集当且仅当它能用正规式表示

正规式和正规集的递归定义

对给定的字母表Σ

1)ϵ 都是Σ 上的正规式,它们所表示的正规集为{ϵ}

2)任何aΣaΣ 上的正规式,它所表示的正规集为{a}

3)假定e1e2 都是Σ 上的正规式,它们所表示的正规集为L(e1)L(e2) ,则

​ i) (e1|e2) 为正规式,它所表示的正规集为L(e1)L(e2)

​ ii) (e1e2) 为正规式,它所表示的正规集为L(e1)L(e2)

​ iii) (e1) 为正规式,它所表示的正规集为(L(e1))

仅由有限次使用上述三步骤而定义的表达式才是Σ 上的正规式,仅由这些正规式表示的字集才是Σ 上的正规集

若两个正规式所表示的正规集相同,则称这两个正规式等价

如,b(ab)=(ba)b

编译原理复习3

上图是NFA转DFA的重要工具

DFA状态的划分很重要:

编译原理复习3

编译原理复习3

编译原理复习3

编译原理复习3

词法分析器的自动产生——Lex

相关文章: