0
我正在龙书中使用算法实现正则表达式分析器。现在我可以生成一个DTran表并解析一些基本的正则表达式,如:(a|b)*abb
。如何在实现正则表达式分析器时实现点(。)符号?
但是在执行.
符号时遇到了问题,它符合任何字符。在龙书中没有关于它的文字,是否有关于实现它的一些例子或文章?
我正在龙书中使用算法实现正则表达式分析器。现在我可以生成一个DTran表并解析一些基本的正则表达式,如:(a|b)*abb
。如何在实现正则表达式分析器时实现点(。)符号?
但是在执行.
符号时遇到了问题,它符合任何字符。在龙书中没有关于它的文字,是否有关于实现它的一些例子或文章?
解决它自己,这是它的乐趣。下面的答案并不多,但是。
它与其他模式匹配非常类似,比如*,并且记住在同一文本上可能会出现多个匹配;这就是为什么它可能被遗漏(当语法很丰富时,Dtran或状态机会变得很难);加上它非常相似,但接受一个字符。你可能不得不转换到NFA(非确定型有限自动机)以保持简单。
很明显,我没有通过龙书,但在大学,“计算理论”报道。我画了很多状态机。