CPython使用什么解析器生成器?

时间:2012-05-25 04:56:54

标签: python parsing parser-generator asdl

我正在阅读文档中的this page,并注意到它说

  

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

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

1 个答案:

答案 0 :(得分:3)

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

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

-- ASDL's four builtin types are identifier, int, string, object

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

"""An implementation of the Zephyr Abstract Syntax Definition Language.

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

Only supports top level module decl, not view.  I'm guessing that view
is intended to support the browser and I'm not interested in the
browser.

Changes for Python: Add support for module versions
"""

所以它似乎是一个自定义解析器生成器。 LALR(1)解析器生成器并不难写。