【发布时间】:2013-05-28 15:49:21
【问题描述】:
我试图了解自下而上解析的实现方式。
我知道正则表达式先转换为 NFA,然后再转换为 DFA,以及如何将 DFA 表示为二维表。
问题是那不是一张相当大的表格,其中一侧列出了字母表中的所有内容吗?这真的是它应该实现的方式吗?
另一个问题是,据我所知,大多数语言都有一些现成的正则表达式实现。这些 Regex 实用程序是否可以用作词法分析部分的现成实现,然后可以直接继续将解析表输出为输出?
【问题讨论】:
-
这些 Regex 实用程序能否用作词法分析部分的现成实现:当然,但 DFA 比常见(回溯)regex 库快得多。
-
正则表达式与任何类型的解析无关,无论是自下而上、自上而下、从左到右还是从右到左。它们用于扫描仪,而不是解析器。生成 NFA 和 DFA 的过程先于两者。它发生在编译时。
标签: regex parsing compiler-construction lexical-analysis