我试图了解自下而上解析的实现方式。
我得到了正则表达式转换为 NFA,然后转换为 DFA 以及如何将 DFA 表示为二维表的地步。
问题是那不是一张很大的表,其中字母表中的所有内容都列在它的一侧吗?这真的是它应该实施的方式吗?
另一个问题是据我所知,大多数语言都有一些现成的正则表达式实现。这些正则表达式实用程序可以用作词法分析部分的现成实现,然后可以直接继续将解析表输出到输出中吗?
我试图了解自下而上解析的实现方式。
我得到了正则表达式转换为 NFA,然后转换为 DFA 以及如何将 DFA 表示为二维表的地步。
问题是那不是一张很大的表,其中字母表中的所有内容都列在它的一侧吗?这真的是它应该实施的方式吗?
另一个问题是据我所知,大多数语言都有一些现成的正则表达式实现。这些正则表达式实用程序可以用作词法分析部分的现成实现,然后可以直接继续将解析表输出到输出中吗?
我试图了解自下而上解析的实现方式。
不,你不是。你的问题是关于词法分析的。与解析无关。
我得到了正则表达式转换为 NFA,然后转换为 DFA 以及如何将 DFA 表示为二维表的地步。
同样,这与解析无关。它也与实际的词法分析无关。这是一个关于词法分析器生成的问题。您现在从您陈述的主题中删除了两个步骤。
问题是那不是一张很大的表,其中字母表中的所有内容都列在它的一侧吗?
它将与表示 DFA 所需的一样大,而这又取决于您指定的规则。不是一个真正的问题。
这真的是它应该实施的方式吗?
有很多方法可以表示 DFA。flex(1)提供了三个或四个选项,例如,每个选项都有不同的空间/时间折衷。您几乎肯定会从实现字符类开始,这将立即消除“在其一侧列出的字母表中的所有内容”。
另一个问题是据我所知,大多数语言都有一些现成的正则表达式实现。这些正则表达式实用程序可以用作词法分析部分的现成实现,然后可以直接继续将解析表输出到输出中吗?