编译原理:第六节
来源:互联网 发布:mysql 别名 编辑:程序博客网 时间:2024/05/01 02:13
编译原理:正规式与有限自动机
正规式与正规集
正规式的作用:表示语言
正规集的作用:表示语言的集合
正规表达式是一种表示法,可以详细描述高级程序语言单词符号或者说每一个正规表达式r 表示一个语言 L(r).例如可以用正规表达式表示C++语言的标识符,而C++语言的标识符(集合)可以看作一个语言,因此正规表达式r 实质是用来表示一个语言L(r).
具体来看什么是正规式和正规集呢?看个例子:
设字母表为 {0,1} ,则0,1, ε,Ø 都是该字母表上的正规式
0|1 ,0*,1*等也是字母表上的正规式
相应的正规集为:{0,1} {ε,0,00,000,0000,...} {ε,1,11,111,1111,...}
规定“*”, “连接” ,“|”运算左结合,
优先级由高到低
正规式 (a)|((b) *(c)) 等价于a|b *c
例:å={A,B,…,Z,a,b,…,z,0,1,…,9}
正规式1:A |B... |Z|a|b...|z
语言1:L( A) ∪ L( B)… ∪ L( Z) ∪ L( a) ∪ L( b)... ∪ L(z)
= {A,B,…,Z,a,b,…,z}
正规式2: 0 |1|.. .|9
语言2:L(0) ∪ L(1) ∪... ∪ L(9)= { 0,1,…,9}
正则式与有限自动机
有限自动机接收的语言等价于正规文法产生的正则语言。而正规式或正则集定义的语言也为正则语言。所以,正规式与有限自动机在描述上等价。对于å上任一正规表达式r,一定能构造一个NFA m,使得L( r )=L(m)。
从正规式到有限自动机
举个转化的例子,如下图所示:
从有限自动机到正规式
对于å上任一NFA m,能构造å上一个正规表达式r,使得L( r )=L(m)。
首先,在m的转换图上加进S,Z两个结点。从S用e弧连接到m的所有初态结点,从m的所有终结(接受)结点用e弧连接到Z,从而构成一个新的NFA m’,L(m)=L(m’)。
反复使用下面的替换规则逐步消去NFA m’中的状态结点和弧,直至剩下S,Z为止。在消去结点的过程中,逐步用正规式标记弧。举个转化的例子,如下图所示:
正规式,正规文法与有限自动机的关系:
0 0
- 编译原理:第六节
- 编译原理第六单元习题
- 2007年1月25日、编译原理第六课
- 读《编译原理》第六章,中间代码生成
- 编译原理:第二节
- 编译原理:第四节
- 编译原理:第七节
- 通信原理第六版
- 第六部分 DWR原理
- 编译原理
- 《编译原理》
- 编译原理
- 编译原理
- 编译原理
- 编译原理
- 编译原理
- 编译原理
- 编译原理
- 【ecmall】解决无法上传店铺logo和banner照片问题 (三)
- Spring拦截器
- Caused by: java.lang.IncompatibleClassChangeError: Implementing class
- Leetcode_238_Product of Array Except Self
- 因果图法
- 编译原理:第六节
- 求浮点数是否相等
- C运行时库解释
- 使用SSH中Struts2找不到action,后台还没有报错
- java计算器小程序
- IP地址中的保留地址
- 怎么用XAMPP测试网站?
- 数据库基础
- UVa455——Periodic Strings