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 #