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

2024-03-05

我正在读书这一页 http://docs.python.org/py3k/reference/grammar.html在文档中,并注意到它说

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

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


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/ http://asdl.sourceforge.net/ and
http://www.cs.princeton.edu/research/techreps/TR-554-97 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) 解析器生成器并不难编写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPython 使用什么解析器生成器? 的相关文章

随机推荐

  • 选择 LINQ 中 JOIN 后的所有列

    我有两张桌子 Table1 and Table2 我想执行左外连接 var myOutput from object1 in Table1 join object2 in Table2 on object1 Property1 equals
  • 批处理文件日/月/年语法?

    我找不到用于提取当前日 月 年的批处理文件语法的简单细分 我有以下语法来声明用作目录名称的变量 set folder date 10 4 date 7 2 date 4 2 任何人都可以阐明 或发布链接 波浪号 双百分比的含义吗 我似乎无法
  • 在 Android 4.x 上 touchmove 后 Touchend 未触发?

    我正在用 Javascript 编写一些代码 如下所示 var el document getElementById some div el ontouchstart function e el innerHTML touch start
  • 处理具有共同属性但不同对象类型的对象的方法

    我有大量自动生成的对象 尽管它们都是不同的 不相关的类 但所有对象都共享一些基本属性 名称 id 等 我无法控制这些对象的生成 因此不幸的是我无法采取实现接口的理想方法 我想创建一种方法 在其中传递这些对象中的任意一个 并使用这些公共属性执
  • 在 Intellij 中查找 lombok 生成的构造函数的用法

    我有一个带有 lombok 注释的类 Value or Data 并且我正在寻找一种简单的方法来查找自动生成的构造函数的用法 我现在能做的就是找到构造函数的一种用法 将光标放在那里并运行 查找用法 命令 然后我得到我想要的结果 不过我想直接
  • Zurb Foundation _global.scss js 元样式?

    我当时正在开发一个 Foundation 5 项目 结果发现该项目有一个过时的 global scss 组件 我试图得到范围滑块 http foundation zurb com docs components range slider h
  • 如何使用 pymongo 获取 mongo 实例中所有数据库的列表

    如何使用 pymongo 将 mongo 实例中所有数据库的列表获取到变量 例如使用 pymongo 将以下命令发送到 mongo 实例 db adminCommand listDatabases 1 Use 数据库名称 https api
  • 装饰器在 Nest 控制器中返回 404

    我正在使用 NestJS 开发后端 顺便说一句 这很棒 我有一个 标准获取实体情况的单个实例 类似于下面的示例 Controller user export class UserController constructor private
  • 为什么在全新项目(xcode 3.1.4)上不调用 dealloc?

    我开始学习 iPhone 编程 这显然是一个非常简单的问题 我在 xcode 3 1 4 中工作 现在 当我创建一个基于窗口的应用程序的新项目并修改 dealloc 在 AppDelegate m 文件中 以便它实际上在控制台上生成打印语句
  • 使用带有无限参数的函数进行柯里化

    假设我有以下 add 函数 它接受无限数量的参数 function add var total 0 var args Array prototype slice call arguments 0 for var i 0 i
  • 如何在Javascript中计算两个日期之间的年和月?

    有没有办法计算 Javascript 中两个不同日期之间的年数 也考虑闰年 和月份数 这是我知道的获得年份和月份的最佳方法 Assumes Date From df and Date To dt are valid etc var df n
  • 集成 Paytm 支付网关 Android

    我正在尝试将 paytm 的支付网关集成到我的 Android 应用程序中 我似乎在他们的网站上找不到任何适当的文件或程序 我已经通过谷歌检查了这方面的每一条线索 但没有帮助 尝试通过邮件和电话联系 Paytm 团队 没有回复 现在我被困在
  • PySpark + Cassandra:获取分区键的不同值

    我正在尝试获取 pyspark 中 cassandra 表的分区键的不同值 然而 pyspark似乎不理解我并完全迭代所有数据 很多 而不是查询索引 这是我使用的代码 对我来说看起来非常简单 from pyspark sql import
  • 将 geom_bar 添加到圆形图 ggplot2

    我有一个数据框 如下所示 dat lt structure list x 1 14 y c 1 26071476002898 1 97600316441492 2 41629009067185 3 48953782319898 10 8 4
  • 使用覆盖率,我如何测试这条线?

    我有一个简单的测试 class ModelTests TestCase def test method self instance Activity title Test self assertEqual instance get appr
  • gwt-ext 和 ext-gwt 之间的区别

    我是在服用疯狂的药物 还是这两件事几乎相同 到目前为止 我已经在这两个框架上花费了大量时间 我想说它们并不 几乎相同 虽然它们可能都使用相同的图形资源 但它们实现这一目标的方式非常不同 根据您的需求 开发风格 您可能会发现其中一种比另一种更
  • nvidia驱动、cuda驱动和cuda工具包之间有什么关系?

    在nvidia驱动包中 有libcuda so cuda驱动和nvidia驱动一样吗 cuda工具包和libcuda so之间有什么关系 来自cuda文档 http docs nvidia com cuda cuda c programmi
  • 如何从 javascript Intl.DateTimeFormat 获取时区缩写

    我正在尝试使用 ECMA 402 国际 API 来获取非本地时区的时区缩写 服务器时区是 UTC 我知道其他方法可以得到这个 我试图了解国际 API 的局限性并充分利用它 我可以获取完整的时区名称并自己进行映射 但由于缩写位于 IANA t
  • Java:转换为类型参数

    我有以下两个课程 public class GenericNumberOperation public GenericNumberOperation public
  • CPython 使用什么解析器生成器?

    我正在读书这一页 http docs python org py3k reference grammar html在文档中 并注意到它说 这是完整的 Python 语法 由解析器生成器读取 并用于解析Python源文件 但是 我很难找出 C