我正在阅读文档中的this page,并注意到它说
这是完整的Python语法,因为解析器生成器会读取它 并用于解析Python源文件
但是,我很难找到CPython使用的解析器生成器。那么CPython使用什么解析器生成器呢?是否有其他解析器生成器可以在没有任何修改的情况下获取该页面上的语法?
答案 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)解析器生成器并不难写。