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* 的目的是什么?此外,为什么要添加第三个点?

请有人清除我的疑问。

4

1 回答 1

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+) )
于 2010-06-21T13:47:26.993 回答