【发布时间】:2012-05-30 02:37:45
【问题描述】:
我正在将一组给定的正则表达式转换为单个 NFA,但我遇到了一些问题。我应该如何转换诸如“ab.*c”之类的正则表达式(表示匹配一个'a',一个'b',任意数量的字符,然后是一个'c')?
我的最终目标是将单个 NFA 转换为 DFA(为此我使用了子集构造算法)。
【问题讨论】:
-
这需要更多上下文。一旦你知道算法(实际上即使你不知道),转换是微不足道的,如果你不知道,首先不清楚你想如何使用 NFA,或者你会如何理解一个答案,就此而言。你的知识水平如何?
-
我不会直接与 NFA 合作,因为我只想与 DFA 合作。我正在将正则表达式转换为 DFA(通过 regex -> NFA -> DFA),但是 .* 是我认为我处理不正确的情况,因为当我尝试构建具有交叉转换的自动机时,我得到了状态-空间爆炸(但不是当我尝试在没有交叉转换的情况下构建它时)。
标签: regex algorithm dfa nfa kleene-star