Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 306 – 如何修改 Python 语法

作者:
Michael Hudson <mwh at python.net>, Jack Diederich <jackdied at gmail.com>, Alyssa Coghlan <ncoghlan at gmail.com>, Benjamin Peterson <benjamin at python.org>
状态:
已撤回
类型:
信息性
创建日期:
2003 年 1 月 29 日
发布历史:
2003 年 1 月 30 日

目录

注意

此 PEP 已迁移到 Python 开发指南 [1]

摘要

修改 Python 语法不仅仅是编辑 Grammar/GrammarPython/compile.c。此 PEP 旨在成为一个必须修复的地点清单。

这可能是不完整的。如果您发现遗漏,请自行添加 – 您不会冒犯作者的所有权感。否则,请提交一个 bug 或补丁,并分配给 mwh。

此 PEP 并非旨在成为 Python 语法黑客攻击的说明手册,原因有几点。

基本原理

人们总是会弄错这一点;花了一年多的时间才有人注意到 [2] 添加整除运算符(//)破坏了 parser 模块。

核对清单

  • Grammar/Grammar:好吧,您可能已经解决了这个问题 :)
  • Parser/Python.asdl 可能需要更改以匹配 Grammar。运行 make 来重新生成 Include/Python-ast.hPython/Python-ast.c
  • Python/ast.c 将需要更改以创建与 Grammar 更改相关的 AST 对象。Lib/compiler/ast.py 将需要与纯 Python AST 对象进行匹配的更改。
  • Parser/pgen 需要重新运行以重新生成 Include/graminit.hPython/graminit.c。(make 应该会为您处理此问题。)
  • Python/symbtable.c:这处理在编译阶段之前立即发生的符号收集传递。
  • Python/compile.c:您将需要创建或修改 compiler_* 函数来为您的产生式生成操作码。
  • 您可能需要重新生成 Lib/symbol.py 和/或 Lib/token.py 和/或 Lib/keyword.py
  • parser 模块。将一些新语法添加到 test_parser,并在 Modules/parsermodule.c 上反复测试,直到它通过为止。
  • 将一些新语法的使用情况添加到 test_grammar.py
  • compiler 包。一个好的测试是使用 compiler 包来编译标准库和测试套件,然后检查它是否能运行。请注意,这仅在 Python 2.x 中需要。
  • 如果您已经更改了 Python 的标记结构,那么 Lib/tokenizer.py 库模块将需要更改。
  • 某些更改可能需要调整库模块 pyclbr
  • 必须编写文档!
  • 在所有内容都签入后,您很可能会看到对 Python/Python-ast.c 的新更改。这是因为这个(生成的)文件包含 SVN 版本,其中包含其生成源。没有办法避免这种情况;您只需单独提交此文件。

参考资料


来源:https://github.com/python/peps/blob/main/peps/pep-0306.rst

最后修改:2025-02-01 08:59:27 GMT