- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3第三章词法分析自动机汇编
第三章 词 法 分 析
第一节 对 于 词 法 分 析 器 的 要 求
第二节 词 法 分 析 器 的 设 计
第三节 正 则 表 达 式 和 有 限 自 动 机
第四节 词 法 分 析 器 的 自 动 生 成
正 则 表 达 式 和 正 则 集
1、正则表达式和正则集:
字母表 ? 上的正则表达式和它表示的正则集递归定义如下:
(1)ε和 ? 都是 ? 上的正则表达式,它们所表示的正则集分别为
{ ε } 和 ? ,其中 ε是空串, ? 是空集;
(2) 任意的 a ? ? 是正则表达式,它所表示的正则集是 { a };
(3)如果 e 1 和 e 2 是 ? 上的任意的正则表达式,分别表示 的正则集为
L ( e 1 ) 和 L ( e 2 ) ,则:
第一, e1 | e2 也是正则表达式,表示的正则集为 L (e1 | e2 )= L (e1) U L (e2)
第二, e 1 e 2 也是正则表达式,表示的正则集为L (e1 e2 )= L (e1) L (e2)
第三, (e1) * 也是正则表达式,表示的正则集为 L ( (e1) * ) = L (e1) *
仅由有限次使用上述三个步骤而得到的表达式是? 上的正则表达式,仅由这些表达式所表示的字集是? 上的正则集。
正则表达式的运算符
| 表示或“
* 表示“闭包“—任意有限次(零次或多次)的自重复连接
. 表示“连接“,一般省略
运算优先级 “ * ”, 高于 “ .” ,高于 |
正 则 表 达 式 的 运 算 符 及 其 性 质
设α,β,γ 都是字母表 ? 上的正则表达式,正则表达式有如下一些性质:
(1) α | β = β | α
(2) α | (β | γ )= (α | β)| γ
(3) (α β)γ = α(β γ )
(4) (α | β) γ = α γ| β γ
α (β| γ) = α β | α γ
α ? = ? α= α
| 具有交换律、结合律
. 具有结合律、分配律
( ) 指定优先关系
例: 设有字母表 : ∑ = { a, b }
则下列各式: a*, (ab)*, ab*, b(ab)*, a|ba*, a(a|b)*
均为定义在 ∑ 上的正则表达式, 它们所表示的正则集分别为:
L(a*) = L(a)* = { ?, a, aa, aaa, ??? }
L((ab)*) = L(ab)* = {?, ab, abab, ababab, ??? }
L(ab*) = L(a)L(b)* = { a, ab, abb, abbb, ??? }
L(b(ab) *) = L(b)L(ab)* = { b, bab, babab, bababab, ??? }
L(a|ba*) = L(a) ∪L(ba*) = { a, b, ba, baa, baaa, ??? }
L(a(a|b) *) = L(a)L(a|b)* = { a, aa, ab, aaa, aab, aba, ??? }
例:设?={a,b}, ?上的正规式和相应的正规集的例子有:
正规式 正规集
a {a}
a?b {a,b}
ab {ab}
(a?b)(a?b) {aa,ab,ba,bb}
a ? {? ,a,aa, …… },是任意个a组成的的串
(a?b)? {? ,a,b,aa,ab ……},是所有由a和b组成的串
(a?b)?(aa?bb)(a?b)? ??上所有含有两个相继的a或两个相继的b组成的串
例题:词法分析器的输入是什么?
例题:令?={a,b},则?上所有以a开头,后跟0个或许多个的
ab的字的全体对应的正规式是什么?
例题:请写出表示标识符的正规式e1=(l|_)(l|d|_)*所对应的
正规集。
例题:有一台饮料自动售货机,接收1元或2元硬币,出售3
元钱一瓶的饮料。顾客每次向机器中投放等于或大于3元的
硬币,便可得到一瓶饮料(注意:多投不找钱)。写出对
应饮料自动售货机售货过程的正规式。画出与该正规式的
最小DFA。
答案:源程序(的字符流)
答案:a(ab)*
答案:{l,_,ll,ld,l_,_l,_ _,-d,……}或者{以1或_打头l,_,d组成
文档评论(0)