2012-10-06 55 views
-3

我试图绘制出一个有限状态机(启动,下一个状态等) 我怎么可以得出这样只用7个州?逻辑,有限状态机

我写了什么表的样子,这样输入查询字符转换为记号 表:例如如果在一个用户键入一个T代表真正应该输出

输入/输出或令牌

1 /T, 
2 /F, 
# /~, 
! /~, 
& /^, 
* /^, 
+ /v, 
<>/x, 
!=/x, 
=>/>, 
-->/>, 
--/=, 
= /=, 
==/=, 
(/(, 
) /), 
+1

请整理表格,所以它使最感。此外,请详细说明您确切需要什么。 –

+0

至少荷马试图隐瞒这是家庭作业的事实。 – dokaspar

+0

@Dominik,因为作业标签正在逐步淘汰,标记家庭作业的标准方式现在已经消失。是的,有人可能会提到这个问题,但我不会称之为“硬性隐藏”的遗漏。 – MvG

回答

0

需要对于输入序列的每一个的前缀的状态。所以,你的状态应该对应于

"", "<", "!", "=", "-", "--" 

通常,从而完成所识别的输入序列将产生相应的输出,然后返回到初始状态,每输入字符。任何有助于输入序列但尚未完成的输入字符都会导致与迄今为止读取的前缀匹配的状态转换。如果任何输入都不会被报告为错误。

你做在你的表中的一些棘手的情况下,虽然。有一些输入序列本身是其他输入序列的前缀。例如,当输入包含“= +”时。在第一个“=”之后,你不知道是否会出现“>”,所以你还不能输出任何东西。在“+”之后,你知道你必须先输出“=”,然后立即输出“+”。因此,您的自动机必须设计为每个转换处理多个输出。

+0

我想知道是否例如第一个是假设输出T为真,如果你画一个弧形回到开始状态,而我的问题是这个弧形是否算作一个状态? (不同于<符号需要一个带有圆弧的“圆”状态?) –

+0

弧是过渡状态,而不是状态。因此对于大多数单字符序列,从起始状态到自身都有弧。 – MvG