2010-06-21 29 views
1

正則表達式Sipser的書計算的理論,以下給出:爲數值常數

數值常數,其可包括分數部分 和/或符號可被描述爲在語言中的一員

(+ U-U e)(D + U D + .D * UD * .D +)

其中D = {0,1,2,3,4,5,6,7,8,9}是十進制數字的字母表。生成的字符串的示例 是:72,3.14159,+7。和-.01。

在這裏我不明白接受D +或D *聯合的目的是什麼? 此外爲什麼添加第三點?

請有人清除我的疑問。

回答

3

它試圖涵蓋以下情況:

5 #matched by D+ 
.5 #matched by D*.D+ 
5. #matched by D+.D* 
5.5 #matched by both D*.D+ and D+.D* 
. #not matched 

.字符在表達式是小數點分隔符。你可以這樣讀出表達式:

(+ U - U e) ((D+) U (D+ . D*) U (D* . D+)) 
+0

哦....非常感謝...我解析它完全錯了.. 再次感謝。 – 2010-06-21 13:49:43