转换正则表达式到有限状态机(Converting regular expression to fin

2019-06-26 04:26发布

你将有一个提示,在算法任何正则表达式转换为有限状态机。 例如,一个算法解析正则表达式和增加国家的FSM是否正确? 任何参考或更深的想法?

我与Python这种书面方式

感谢致敬

Answer 1:

使用迈克尔·西蓬瑟的介绍计算理论 。 第1章给出了详细的算法的正则表达式转换为确定性或非确定性有限状态自动机(DFA或NFA),在证明它们的等价(一个DFA中,NFA和一个正则表达式的上下文中可以精确匹配相同的类字符串)。

总的想法是:你转换正则表达式的NFA,这是相当直接了( *为一个循环, |和字符范围为分支点)。 然后,您可以转换NFA成(更大)DFA,这涉及到每个替代NFA状态创建一个DFA状态。 的DFA具有至多为许多州的NFA状态集合的幂(例如,具有3种状态的NFA可以得到转换为DFA与至多2 ^ 3 = 8种状态),并能够识别任何目标串而不回溯。 读这本书的详细信息。



文章来源: Converting regular expression to finite state machine