正则表达式Regular Expression
生活随笔
收集整理的這篇文章主要介紹了
正则表达式Regular Expression
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
《編譯原理》第三章習(xí)題
我們的教材是那本經(jīng)典的“龍書(shū)”:《Compiler: Principles, Techniques, and Tools》灰常灰常喜歡小監(jiān)老師的課,就是做作業(yè)的記憶太痛苦了。。。
3.3.2 試描述下列正則表達(dá)式定義的語(yǔ)言
1) a(a|b)*a
以a開(kāi)頭且以a結(jié)尾,中間由零個(gè)或多個(gè)a或b的實(shí)例構(gòu)成的串
2) ((ε|a)b*)*
零個(gè)或多個(gè)a或b的實(shí)例構(gòu)成的串
3)(a|b)*a(a|b)(a|b)
三個(gè)或多個(gè)a或b的實(shí)例構(gòu)成的串,且倒數(shù)第三個(gè)實(shí)例一定為a。
4)a*ba*ba*ba*
零個(gè)或多個(gè)a的實(shí)例,三個(gè)b的實(shí)例構(gòu)成的串。
!!5)(aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*
零個(gè)或偶數(shù)個(gè)a的實(shí)例,相同個(gè)數(shù)的b的實(shí)例構(gòu)成的串
3.3.5
3) Comments, consisting of a string surround by /* and */, without an intervening*/, unless it is inside double-quotes (")
[plain]?view plaincopy
3.4.1 給出識(shí)別練習(xí)3.3.2中各個(gè)正則表達(dá)式所描述的語(yǔ)言的狀態(tài)轉(zhuǎn)換圖
1) a(a|b)*a
2) ((ε|a)b*)*
3)(a|b)*a(a|b)(a|b)
4)a*ba*ba*ba*
!!5)(aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*
3.6.2 為練習(xí)3.3.5中的每一個(gè)語(yǔ)言設(shè)計(jì)一個(gè)DFA或NFA
Comments, consisting of a string surround by /* and */, without an intervening*/, unless it is inside double-quotes (")
設(shè)計(jì)NFA如下:
(感覺(jué)這個(gè)有些問(wèn)題,不知道^可不可以用作轉(zhuǎn)移條件。。。。)
3.6.5 給出如下練習(xí)中的NFA的轉(zhuǎn)換表
1)練習(xí)3.6.3
2)練習(xí)3.6.4
3)圖 2-6
3.7.1 將下列圖中的NFA轉(zhuǎn)換為DFA
1)圖3-26
?
2)圖3-29
3)圖3-30
3.7.3 用算法3.23和3.20將正則表達(dá)式轉(zhuǎn)換為DFA
1) (a|b)*?
由算法3.23得到NFA:
由算法3.20得到DFA:
2) (a*|b*)*?
由算法3.23得到NFA:
由算法3.20得到DFA:
3) ((ε|a)b*)*
由算法3.23得到NFA:
由算法3.20得到DFA:
此處可以看到 1) 2) 3)表示的語(yǔ)義是等價(jià)的,NFA可以有多種表示形式,但DFA是唯一的
4)(a|b)*abb(a|b)*
由算法3.23得到NFA:
由算法3.20得到DFA:
轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/xiaowei_cqu/article/details/7764967
總結(jié)
以上是生活随笔為你收集整理的正则表达式Regular Expression的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 排序算法:希尔、归并、快速、堆排序
- 下一篇: 用Lex做词法分析