您的位置:首页 > 其它

编译原理复习3

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

群号是⑥⑥①⑨②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状态的划分很重要:









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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: