标签: regex regular-language automata computation-theory dfa
当句柄处于“关闭”状态时,程序不应写入连接句柄。一开始,连接将处于“连接”状态,但是当“断开”事件后跟“写入”时,它可以移动到“错误”状态。 “重新连接”事件将连接移回“已连接”状态,其中允许“写入”操作。多次断开连接,重新连接和写入都是冗余的,这意味着第二次连续操作无效。
将其建模为正则表达式和DFA?
我认为DFA是4种状态:连接,断开连接,写入,错误以及三种可能的移动(连接,写入和断开连接)但不知道正则表达式。
答案 0 :(得分:0)
我的阅读方式略有不同,有三种状态:
和三个字符/过渡
DFA为
此处我假设我们无法打开套接字,因此只有closed才是接受状态
closed
我们可以忽略error(我们没有办法摆脱error状态,因为我们想让这些字符串失败)
error
假设我们从open状态开始,需要接受任意数量的write和reconnect转换,然后一个或多个disconnect转换断开连接
open
write
reconnect
disconnect
[wr]*d+
但我们也可以从断开状态重新连接。请注意,上面接受r作为第一个字符。我们的最终正则表达式是
r
([wr]*d+)+