北航计算机学院编译,北航计算机学院编译习题讲解.docx

本文详细解析了词法分析的原理,包括其功能、状态图设计和自动生成有穷自动机的过程。还涉及正则表达式和文法的应用,如状态图表示及语言确定性分析,以及正则表达式等价性和语言表示的证明。通过实例演示如何构造DFA并转换正则表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2008年

2008年7月2日1

2008年

2008年7月2日1

fit

第三章:词法分析

3. 1词法分析的功能 3. 2词法分析程序的设计与实现

-状态图

3. 3词法分析程序的自动生成

-有穷自动机.

LEX

补充

最小化

2008年

2008年7月2日

2008年

2008年7月2日

正则文法

正则表达式

2008年

2008年7月2日

2008年

2008年7月2日

P67:l?画出下述文法的状态图

:

:= e

:

:= f

:

:=e I < A > e

使用该状态图检查下列句子是否是该文法的合法句子 f, eeff, eefe

解:

f> eeff不是该文法的合法句子,eefe是该文法的合法句子

P67: 2.有下列状态图,其中S为初态,Z为终态。

(1 )写出相应的正则文法:迤£八厂

写出该文法的V, V“和人;A

(3 )该文法确定的语言是什么?

A出错点:第(3)小题,文法确定的语言,很多同学回 答出了,但是写的格式很不规范。

解:

(1 ) Z-A1I0A-A0I0

V= {A, Z, 0, 1} Vn= {A, Z}Vt={0, 1}

L (G[S])= {0或Onl,n>l}

0100*1

P67:5?令A,B, C是任意正则表达式,证明以下关系成立:

A|A=A

(A* ) *= A*

A*=s| AA*

(AB ) * A = A ( BA ) *

(A|B) *= (A*B*) *= (A*|B*)

A该题做得不错!但少部分同学最后一个等式没有证明。 另外,有些同学虽然证对了,但是过程比较烦琐或者是 不规范。

2008年

2008年7月2日 PAGE #

2008年

2008年7月2日 PAGE #

?证明:正则表达式表示的语言相等,则正则表达式相等

⑴若用La表示正则表达式A表示的语言,则A | A表示的语言是:LaULa 因为LaULa=La 所以A | A=A

⑵(A*) *表示的语言为(La*)*

A*表示的语言为La*

(La*)*= (La*)° U (LA*)i U (LQ2 …

={w} U (LQi U (La*)2 ??-

下面用数学归纳扌去证明(L:*)n= La* , n>l

n=l时,显然成立

假定n=k时,(LA*)k= La* ,贝ljn=k+l 时

(LQk+— (LJ)kLf = La* La* = ( LJ ULJ ULf …)Lj

=La° La* U LJ La* u La2La* ...

=宀。U LJ U Lf …)U LJ ( LJ U LJ U LA^...)U Lf ( Lj U Lj U JL/A ? ? ? /?

=(L/U LJ U LaL. ) U (LJ U La2 U La\..)U (Lj U La3U L/...)… =La° U LJ u La2 …

= La*

???(LA*)k+1 = La* ,故际尸=La* , n>l

???好心{c} U (La*)】U (LQ2??={e} U La* = LA*

£ I AA*所表示的语言是:

{£} u lala*

=La°ULa (L/UL/UVU...)

= LaOULa1ULa2U...=La*

故w | AA* = A*

(LaLb) La=({w} U LaLb U LaLbLaLb U LaLbLaLbLaLb U ...) LA =La U LaLbLa U LaLbLaLbLa U LaLbLaLbLaLb U La … =La U ({s} U LbLa U 1^bLaLbLa U …)

=la(lbla)

??? (AB)*A=A(AB)*

2008年

2008年7月2日

2008年

2008年7月2日

⑸三个表达式所描述的语言都是La和Lb中符号串的任意组合 ?I (A|B) *=(A*B*)*=(A*|B*)*

P67: 6?构造下列正则表达式相应的DFA

(1 ) 1 (0|1) *|0

(2) 1 ( 1010*|1 (010) *1 ) *0

A在状态图中终止状态没有用双线圆标出

(1 )与 1 (0|1 ) *|0对应的NFA为:

0

确定化:

2008年

2008年7月2日11

2008年

2008年7月2日11

1

1

12

12

12

12

(2) 1 ( 1010* 1 (olon

2008 曲7M2B

me欧/.腓800宀

2008年

2008年7月2日14

2008年

2008年7月2日14

1

1

1

1

P68: 8 ?把图 3. 24 的(a)和

开始厂、

2008年

2008年7月2日 PAGE #

2008年

2008年7月2日 PAGE #

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值