ttyrec

Python 之父的解析器系列之四:可视化 PEG 解析

对着背影说爱祢 提交于 2019-11-28 18:45:02
原题 | Visualizing PEG Parsing 作者 | Guido van Rossum(Python之父) 译者 | 豌豆花下猫(“Python猫”公众号作者) 声明 | 本翻译是出于交流学习的目的,基于 CC BY-NC-SA 4.0 授权协议。为便于阅读,内容略有改动。 上周我展示了一个简单的 PEG 解析器生成器。本周我将展示生成的解析器在解析程序时实际执行的操作。我深入研究了 ASCII 艺术的复古世界,特别是一个名为“curses”的库,它可以在 Linux 和 Mac 的 Python 标准库中找到,也可以作为 Windows 的附加组件。 【这是我的 PEG 系列的第 4 部分。见 第1部分 , 第2部分 , 第3部分 , 第5部分 】(译注:对应的译文, 第1篇 、 第2篇 、 第3篇 、第5篇待译 ) 让我们来看看可视化已取得的进展。截图里的屏幕被分隔为三个部分,分别是简单的 ASCII 字符,以及用连字符划出的线: 上部分显示了解析器的调用堆栈,你可能还记得它是一个具有无限回溯的递归下降解析器。我将在下面解释如何阅读它。 中间的单行部分展示了标记符缓冲区的内容,光标指向下一个要解析的标记符。 在底部,我们呈现 packrat 解析算法使用的记忆缓存。它的条目类似于一些解析器堆栈条目(具有结果的条目)。 阅读此图表时,要注意的主要事项是