Compiler construction 如何根据此转换图识别数字?

Compiler construction 如何根据此转换图识别数字?,compiler-construction,lexical-analysis,Compiler Construction,Lexical Analysis,龙书《编译器:原理、技术和工具》(第二版)第3.4.3节根据以下转换图,描述了带有可选和E部分的数字识别过程 我的问题是为什么在14、16或17个州没有标记为“其他”的输出边?如果我们在这些州遇到“其他”符号呢?例如,它如何处理输入字符串1.2345E+a 自动机中状态的输出边及其标签描述了该状态下的有效输入。当自动机处于此状态时,如果在输入字符串中遇到任何其他符号,它将不接受字符串。如果在例子中考虑了字符串“代码> 1.23 45 e+A < /COD>自动机将遇到 A当它处于状态17时,由于

龙书《编译器:原理、技术和工具》(第二版)第3.4.3节根据以下转换图,描述了带有可选
E
部分的数字识别过程

我的问题是为什么在14、16或17个州没有标记为“其他”的输出边?如果我们在这些州遇到“其他”符号呢?例如,它如何处理输入字符串
1.2345E+a


自动机中状态的输出边及其标签描述了该状态下的有效输入。当自动机处于此状态时,如果在输入字符串中遇到任何其他符号,它将不接受字符串。如果在例子中考虑了字符串“代码> 1.23 45 e+A < /COD>自动机将遇到<代码> A<代码>当它处于状态17时,由于<代码> < <代码>不是一个数字,自动机将拒绝所期望的字符串。

在第3.4.4节结束时,它读取“我们允许转换图读取输入,直到没有可能的下一个状态,然后获取匹配任何模式的最长词素“。根据这个策略,它不应该返回
1.2345
E
+
a
?我在
flex
中试用过,它确实返回
1.2345
E
+
a