【发布时间】:2013-01-03 09:13:59
【问题描述】:
(我只是在学习如何编写编译器,所以如果我提出任何不正确的声明,请纠正我)
当人们可以简单地使用正则表达式时,为什么还要在代码中实现 DFA(goto 语句、表驱动的实现)?据我了解,词法分析器接收一串字符并生成一个标记列表,这些标记在语言的语法定义中是终端,使得它们可以用正则表达式来描述。循环一堆正则表达式,如果找到匹配项就跳出循环不是更容易吗?
【问题讨论】:
-
主要原因是表格驱动的 DFA 可以很容易地由程序(例如 lex)生成。
标签: regex compiler-construction lexical-analysis dfa