词法分析器:通过有限自动机实现正则表达式?

Posted

技术标签:

【中文标题】词法分析器:通过有限自动机实现正则表达式?【英文标题】:Lexical Analyzer: regular expressions implementation via finite automata? 【发布时间】:2014-03-04 09:45:14 【问题描述】:

致敬!

在阅读 Dragonbook 的第 3 章(词法分析)时,我几乎了解了所有内容(他们如何使用正则表达式指定标记),直到他们开始谈论有限自动机。它似乎是描述词法分析器的重要部分。

现在我了解了有限自动机的概念,但我不了解它在词法分析器中的作用和用途?为什么不只用正则表达式指定标记?

提前致谢。

【问题讨论】:

正则表达式将被转换为有限自动机 谢谢。我认为正则表达式是描述字符串集的符号。有限自动机也是如此。但并不是正则表达式被转换为有限自动机。 【参考方案1】:

正则表达式可以用有限自动机表示,更准确地说,可以用确定性自动机表示。

当您编写正则表达式时,词法分析器会将其转换为 DFA 以在文本中查找匹配项。因此,有限自动机当然在词法分析器中发挥了作用。

有非常简单的算法可以将 Regex 转换为 FA,例如 Thompson 的构造算法 (http://en.wikipedia.org/wiki/Thompson's_construction_algorithm),但您可以找到优化算法。

【讨论】:

以上是关于词法分析器:通过有限自动机实现正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

从正则表达式(RE)到最小确定性有限状态自动机(DFA)

编译原理-第三章 词法分析-3.7 从正则表达式到自动机-从正则表达式构造NFA

实现词法分析器时的 DFA 与正则表达式?

编译原理笔记 1

编译原理词法分析

编译原理-第三章 词法分析-3.7 从正则表达式到自动机-从NFA到DFA的转换