Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 2.74 KB

开发上手.md

File metadata and controls

42 lines (27 loc) · 2.74 KB

此文档旨在让有意参与本项目的新开发者尽快了解开发过程,在此之前请先阅读首页说明对项目有总体认识。

流程介绍

添加任何尚未重现的语法功能 都需首先在原始可执行文件 下运行测试确认。木兰具体语法细节可参考逆向工程的实现注意:逆向工程不一定实现了所有语法功能,比如 # 运算

之后再以通过此测试用例为首要目标,可参考本项目之前的类似 commit,如这个 super 语法 ,添加该语法所必需的最少的 Python 代码。

通过该测试用例后,将它添加到现有测试集 中,并运行所有测试确认未影响其他语法和功能。

标识符命名方面,本项目现在尽量使用中文命名。如测试顺利且命名风格一致,在语法说明文档中添加该语法,就可提交 pull request。

适配新 Python 版本

Python 版本更新后,语法树节点、错误提示等可能有所变化,导致本项目运行效果不佳。此时,可以通过 适配新版本指南 中的指南进行更新。

项目结构

概要

木兰源代码通过词法、语法分析,生成 Python 语法树。后通过 compile 编译为 Python 可执行码用 exec 运行。

实现简述

参考逆向工程,项目使用了 Rply 这一分析器框架,在重现过程中对其作了定制,它的 入门见此

项目中,入口为 木兰/中.py,分启动命令行下交互环境与运行木兰源码两部分。

词法分析 部分列出了所有「词」的正则表达式,需注意排列顺序

语法分析包含所有语法规则,以及如何生成 Python 语法树节点。最后有两步对语法树的额外处理,分别与类型内方法和匿名函数有关。