我一直在寻找一些输入正则表达式或字符串并将其转换为NFA然后转换为DFA的算法,这实际上会打印出相应最终DFA的转换表。
我想知道是否已经有一个算法或C或Python库来做这个,或者如果你有算法的建议,我可以实现。
谢谢。
答案 0 :(得分:2)
我不确定这些链接是否可以帮助你。
第一个在Python中提供了一个非常简单的NFA / DFA实现,从NFA转换为DFA。它不会从正则表达式生成NFA,但它并不那么难。第二个站点提供了关于NFA与DFA的长时间讨论,包括大量代码示例(主要在C中)以及我对外部库的链接。第三和第四个链接提供了第二篇文章作者开发的两个正则表达式引擎实现的源代码,包括从正则表达式解析到NFA,然后从NFA转换为DFA。但请注意,我还没有看过这两个项目。
否则,我会提到大多数真实世界的正则表达式引擎使用NFA,而不是DFA,因为某些扩展功能无法使用DFA执行。因此,如果上面的hte链接都没有帮助你,那么你可能会看到编译器编译器,因为它们实际上是使用DFA的。