我正在尝试绘制一个有限状态机(开始、下一个状态等)。如何仅使用 7 个状态来绘制它?
我写出了表格的样子,这将字符输入到标记表中:例如,如果用户输入一个 T 代表真应该是输出
输入/输出或令牌
1 / T,
2 / F,
# / ~,
! / ~,
& / ^,
* / ^,
+ / v,
<> / x,
!= / x,
=> / >,
--> / >,
-- / =,
= / =,
== / =,
( / (,
) / ),
我正在尝试绘制一个有限状态机(开始、下一个状态等)。如何仅使用 7 个状态来绘制它?
我写出了表格的样子,这将字符输入到标记表中:例如,如果用户输入一个 T 代表真应该是输出
输入/输出或令牌
1 / T,
2 / F,
# / ~,
! / ~,
& / ^,
* / ^,
+ / v,
<> / x,
!= / x,
=> / >,
--> / >,
-- / =,
= / =,
== / =,
( / (,
) / ),
输入序列的每个前缀都需要一个状态。所以你的状态应该对应于
"", "<", "!", "=", "-", "--"
通常,每完成一个识别输入序列的输入字符都会产生相应的输出,然后返回到初始状态。任何对输入序列有贡献但尚未完成的输入字符将导致与到目前为止读取的前缀匹配的状态转换。任何两者都不是的输入都将被报告为错误。
不过,您确实有一些棘手的情况。有一些输入序列本身就是其他输入序列的前缀。例如,当输入包含“=+”时。在第一个“=”之后你不知道是否会有一个“>”,所以你还不能输出任何东西。在“+”之后,您知道您必须先输出“=”,然后立即输出“+”。因此,您的自动机必须设计为每次转换处理多个输出。