9

我正在阅读文档中的此页面,并注意到它说

这是完整的 Python 语法,因为它由解析器生成器读取并用于解析 Python 源文件

但是,我很难找出 CPython 使用什么解析器生成器。那么 CPython 使用什么解析器生成器呢?是否有其他解析器生成器可以在不进行任何修改的情况下获取该页面上的语法?

4

1 回答 1

6

Python 是开源的,因此您可以检查源代码...

在 Python 源目录中是一个“Parser”目录,其中包含“Python.asdl”和注释

-- ASDL 的四种内置类型是标识符、int、字符串、对象

在同一目录中还有一个“asdl.py”文件...

"""Zephyr 抽象语法定义语言的实现。

见http://asdl.sourceforge.net/http://www.cs.princeton.edu/research/techreps/TR-554-97

仅支持顶级模块 decl,不支持视图。我猜那个观点
旨在支持浏览器,我对
浏览器。

Python 的更改:添加对模块版本的支持
"""

所以看起来它是一个自定义解析器生成器。LALR(1) 解析器生成器并不难编写。

于 2012-05-25T05:03:33.790 回答