在Sipser的计算理论一书中,给出了以下内容:
可能包括小数部分的数值常数 和/或标志可以被描述为语言的成员
(+ U - U e)(D + U D +。D * U D * .D +)
其中D = {0,1,2,3,4,5,6,7,8,9}是十进制数字的字母。例子 生成的字符串是:72,3.14159,+ 7。和-.01。
在这里我无法理解结合D +或D *的目的是什么? 为什么还要添加第三个点?
请有人清楚我的怀疑。
答案 0 :(得分: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+) )