我想将用户输入的正则表达式转换为NFA,以便随后可以对字符串运行NFA以进行匹配。可用于解析正则表达式的最低机器是什么?
我认为它必须是下推式自动机,因为方括号的含义意味着需要计数,而DFA / NFA不能执行任意计数。这个假设正确吗?例如,表达式a(bc *)d需要使用PDA,以便正确处理括号中的子表达式。
1
“解析”到底是什么意思?您是要检查输入是否确实是正则表达式,还是要考虑更复杂的事情,例如输出相应NFA描述的计算机?(如果不确定输入是否确实是正则表达式,并且需要对其进行检查,则需要能够检查括号是否正确,并且通常意味着使用堆栈。)
—
Kaveh,2012年
对于实际的答案,可以查看grep.y的Plan 9 Grep源。
—
Bruce Ediger