1

我试图了解自下而上解析的实现方式。

我得到了正则表达式转换为 NFA,然后转换为 DFA 以及如何将 DFA 表示为二维表的地步。

问题是那不是一张很大的表,其中字母表中的所有内容都列在它的一侧吗?这真的是它应该实施的方式吗?

另一个问题是据我所知,大多数语言都有一些现成的正则表达式实现。这些正则表达式实用程序可以用作词法分析部分的现成实现,然后可以直接继续将解析表输出到输出中吗?

4

1 回答 1

0

我试图了解自下而上解析的实现方式。

不,你不是。你的问题是关于词法分析的。与解析无关。

我得到了正则表达式转换为 NFA,然后转换为 DFA 以及如何将 DFA 表示为二维表的地步。

同样,这与解析无关。它也与实际的词法分析无关。这是一个关于词法分析器生成的问题。您现在从您陈述的主题中删除了两个步骤。

问题是那不是一张很大的表,其中字母表中的所有内容都列在它的一侧吗?

它将与表示 DFA 所需的一样大,而这又取决于您指定的规则。不是一个真正的问题。

这真的是它应该实施的方式吗?

有很多方法可以表示 DFA。flex(1)提供了三个或四个选项,例如,每个选项都有不同的空间/时间折衷。您几乎肯定会从实现字符类开始,这将立即消除“在其一侧列出的字母表中的所有内容”。

另一个问题是据我所知,大多数语言都有一些现成的正则表达式实现。这些正则表达式实用程序可以用作词法分析部分的现成实现,然后可以直接继续将解析表输出到输出中吗?

  1. 同样,解析与词法分析无关。
  2. DFA已经是“词法分析的现成实现”。
  3. 根据@Qtax 的评论,整个规则集的单个 DFA 比一系列正则表达式快得多。它几乎肯定也更紧凑。
于 2013-06-04T00:30:54.713 回答