Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

7年前关闭。



Improve this question




我一直在寻找某种算法,该算法输入正则表达式或字符串,并将其转换为NFA,然后转换为DFA,并且实际上会打印出相应最终DFA的转换表。

因此,我想知道是否已经有一个算法或C或Python库可以做到这一点,或者您是否有可以使用的算法建议。

谢谢你。

最佳答案

我不确定这些链接是否对您有帮助。

第一个在Python中提供了一个非常简单的NFA/DFA实现,并将NFA转换为DFA。虽然它不会从正则表达式生成NFA,但是执行起来并不难。第二个站点针对NFA与DFA进行了长时间的讨论,包括许多代码示例(大部分使用C语言)以及指向我所不了解的外部库的链接。第三个链接和第四个链接提供了第二篇文章作者开发的两个正则表达式引擎实现的源代码,包括从正则表达式解析为NFA,然后从NFA转换为DFA。但是请注意,我还没有看过这些项目中的任何一个。

  • https://gist.github.com/Arachnid/491973
  • http://swtch.com/~rsc/regexp/
  • https://code.google.com/p/re1/source/browse/
  • https://code.google.com/p/re2/source/browse/

  • 否则,我会提到大多数现实世界中的正则表达式引擎都使用NFA,而不是DFA,因为某些扩展功能根本无法通过DFA执行。因此,如果上面的hte链接都不能帮助您,那么您可能会对编译器编译器有些运气,因为它们实际上是使用DFA的。

    关于regex - NFA DFA和Regex过渡表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19477419/

    10-12 18:07