2011-12-18 125 views
0

我有我有限状态机。 我的正则表达式是:\+[0-9]+\+%\+[0-9]+ 问题是q3处于过度状态(与q1相同)我想知道如何绕过该问题。 我应该简单地将q3重命名为q1还是什么? 谢谢。 enter image description here有限状态机过度状态

EOS - 字符串结束。 如果你不记得RegX。 这基本上意味着接受的字符串将是:“+[0-9]([0-9]任意次数,但至少一次。)+%+[0-9]”([0-9]任意次数,但至少一次)

UPD1新的FSM,问题相同:q4和q2是一样的如何克服这个问题?

+1

我真的不明白你的问题,但我想我会指出你的FSM实际上只匹配'\ + [0-9] * \ +%\ + [0-9] +'而不是' \ + [0-9] + \ +%\ + [0-9] +';也就是说,它允许第一组数字是空的。你需要将你的q 1分成两个状态。另外,我认为恰当地说,你的q 2应该是三个独立的状态,每个字符都是'+'和'%'和'+',但我想现在的符号已经足够清楚了。 – ruakh 2011-12-18 19:54:10

+0

是的,我犯了错误,但它没有影响到这个问题。 – Nikita 2011-12-18 20:11:47

+0

你在这里使用什么工具?我有点困惑。 – StilesCrisis 2011-12-18 20:13:31

回答

3

这里真的没有问题。你写出q 4“与q 2相同,但事实并非如此:只有其中的一个导致q 3,如果你给它的话,只有其中的一个导致q 5,如果你给它尾部的字符串。因此,他们必须由独立的内部状态来表示。

+0

您可能是对的,我刚刚与我的朋友就此发生了一点争论,所以感谢您的回答,它有所帮助,也感谢您发现该错误。 – Nikita 2011-12-18 20:38:18