如何最小化具有多个接受节点的DFA?

时间:2019-05-06 08:05:48

标签: c# lexer dfa compiler-compiler

我实现了一个简单的Scanner-Generator,可以在所有情况下正常运行。

这不是代码问题,而是有关如何优化DFA的问题。使用Hopcroft算法将一个接受节点的最小化和用于接受同一规则的接受节点的效果很好,但是该算法并未将具有多个不同接受节点的DFA最小化。 例如,如果您创建一个接受两个“ if”,“ [a-z] [a-z0-9] *”的DFA,然后运行Hopcroft的算法,则唯一的“接受节点”会消失。当然,每个节点从一开始就被分为不同的组。

我想知道如何最小化这种DFA。 即使您无法解决这些最小化问题,我也希望您能回答。

我的代码:https://github.com/rollrat/compiler-compiler

0 个答案:

没有答案