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