Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

周道 · Zhōu Dào

用中文写 Python。 不用英文关键字、不用缩进、不用冒号、不用花括号。

周道是一套完整的中文编程语言原型——它使用现代中文句法、数学表达和中文标点,先解析为独立 AST,再转译到标准 Python 执行。它借用 CPython 的运行时与生态,但不创造自己的虚拟机。

定义斐波那契(序号)如下:
  如果序号 <= 1,就以序号为所得;
  以斐波那契(序号-1)+斐波那契(序号-2)为所得。

运行如下:
  设索引为0,当索引<15时,一直显示斐波那契(索引),并使索引加1。

为什么有周道

编程语言的语法本质上是给人类读的协议。英文关键词对非英语母语者构成了一道隐形的认知门槛——不是不能学,而是每次阅读都需要在"英文关键词 → 语义"之间做一次映射。

周道尝试一个简单的假设:

如果用完整的母语句法来表达逻辑,阅读代码的认知负荷会不会更低?

这不是要取代 Python,也不是否定英文编程的价值。周道是一个语言原型,用来探索这个假设的真实边界。


看看周道长什么样

1. 基础:函数与文本处理

定义统计(文本)如下:
  设行列表为文本的分割(【\n】);
  设行数为长度(行列表);
  从行列表中,每取一项记作行,就显示行;
  以行数为所得。

运行如下:
  设结果为统计(【第一行\n第二行\n第三行】)。
  显示结果。

2. 控制流:红绿灯状态机

设置信号灯类别,包括状态,默认为【红】。

定义信号灯类别的切换()如下:
  如果自己的状态等于【红】,就使自己的状态变为【绿】;
  不然如果自己的状态等于【绿】,就使自己的状态变为【黄】;
  不然使自己的状态变为【红】。

运行如下:
  设灯为信号灯()。
  灯的切换()。
  灯的显示状态()。

3. 错误处理

定义验证年龄(年龄)如下:
  如果年龄<0,就报错【年龄不得为负】,错误类型是值出错;
  如果年龄>150,就报错【年龄超过上限】,错误类型是值出错;
  以年龄为所得。

定义处理(编号、年龄)如下:
  尝试设用户为查询用户(编号);
  设验证为验证年龄(年龄);
  如果错误类型是键出错,就显示【未找到用户】;
  如果错误类型是值出错,就显示【参数无效】;
  如果出错,就原样报出当前错误。

4. 生成器流水线

定义范围(上限)如下:
  设i为0;
  当i小于上限时,一直依次给出i,并使i加1。

定义过滤偶数(来源)如下:
  从来源中,每取一项记作数,就(如果数余2等于0,就依次给出数)。

定义加倍(来源)如下:
  从来源中,每取一项记作数,就依次给出数乘2。

运行如下:
  设流水线为范围(10);
  设偶数流水线为过滤偶数(流水线);
  设加倍流水线为加倍(偶数流水线);
  从加倍流水线中,每取一项记作结果,就显示结果。

5. 列表操作

设列表为[3、1、4、1、5]。
列表的追加(9)。
列表的排序()。
列表的反转()。
设副本为列表的复制()。
列表的移除(1)。
显示列表。
显示副本。

6. Python 互操作

引入Python模块《math》。
从Python模块《math》中引入 sqrt。

运行如下:
  设结果为sqrt(9)。
  显示结果。

快速开始

pip install -e .          # 安装周道

# 运行
python -m 周道 projects/p1-text-processor/main.zd

# 仅查看生成的 Python 代码
python -m 周道 projects/p1-text-processor/main.zd --emit

# 仅检查语法
python -m 周道 projects/p1-text-processor/main.zd --check

完整示例集在 projects/ 目录下,共 10 个渐进式项目,从文本处理到异步编程全覆盖。

CLI

python -m 周道                    # 显示帮助
python -m 周道 file.zd            # 运行
python -m 周道 file.zd --emit     # 仅输出 Python 代码
python -m 周道 file.zd --check    # 仅检查语法
python -m 周道 file.zd -o out.py  # 转译为 .py 文件

语法一览

句式 形式 说明
绑定 设甲为乙。 建立名称
空值 设甲没有值。 初始化为 None
变更 使甲变为乙。 改变值
输出 显示甲。 打印
条件 如果甲,就乙,不然就丙。 if/elif/else
循环 当甲时,一直乙。 while
遍历 从甲中,每取一项记作乙,就丙。 for
函数 定义甲(乙)如下: 函数定义
异常 尝试甲,如果出错,就乙。 try/except
模块 引入Python模块《json》 import
类别 设置甲类别,包括乙。 class
方法 甲的方法()甲的方法() 方法调用
生成器 依次给出甲 yield

完整的运算符、字面量和句式表见 语法索引


设计理念

  • 不翻译 Python 关键词——不使用 定义 对应 def返回 对应 return,而是寻找中文读者无需编程知识也能理解的完整句式
  • 数学符号 + 汉语式双表层——+ - * / = 保留数学直觉,加 减 等于 保留母语节奏,两者等价
  • 设与使用别—— 用于建立,使 用于改变
  • 所得即结果——以…为所得 表达函数返回值
  • 结构指称——其姓名 在遍历体内指向当前元素

管线架构

源码 → Lexer → Parser → Surface AST → Lowering → Core IR
     → Semantic Analysis → Backend(AST / text)→ Python

两个执行后端:

  • ast 后端(默认):直接构造 Python ast.AST,带异常位置映射
  • text 后端:字符串拼接,用于调试和差分对照

标准库

周道内置了中文命名的基础能力库,无需引入即可使用:

类别 函数
文件与路径 读取文本 写入文本 判断存在 建立目录 列出目录
文本处理 分割 替换 查找 计数 转为大写 转为小写
数据结构 排序 反转 追加 插入 移除 各键 各值
系统 执行命令 环境变量 目前目录 此刻时间 休眠
断言 断言相等 断言为真 断言抛出错误

完整列表见 stdlib.py


项目结构

周道/
├── 周道/                     # 核心源码
│   ├── lexer.py              # 词法分析器
│   ├── parser.py             # 句法解析器
│   ├── lowering.py           # 降低到 Core IR
│   ├── ast_backend.py        # Python AST 后端(默认执行路径)
│   ├── semantic_analyzer.py  # 语义分析
│   ├── runner.py             # 运行器与 CLI
│   ├── stdlib.py             # 中文标准库
│   └── ...
├── projects/                 # 10 个渐进式示例项目
│   ├── p1-text-processor/    # 文本处理
│   ├── p2-multi-file/        # 多文件模块
│   ├── p3-state-machine/     # 红绿灯状态机
│   ├── p4-error-handler/     # 错误处理
│   ├── p5-generator-pipeline/# 生成器流水线
│   ├── p6-async/             # 异步消息
│   ├── p7-python-interop/    # Python 互操作
│   ├── p8-word-frequency/    # 词频统计
│   ├── p9-table-cleaner/     # CSV 清洗
│   └── p10-list-cleaner/     # 列表操作
├── tests/                    # 验收测试
├── docs/                     # 设计与规范文档
└── README.md

许可

v0.0.10rc1 — 候选发布,非生产软件。

周道在 Python 3 的 Unicode 标识符支持和标准库之上构建。文件名、包名、变量名全面使用中文。

About

中文句法式 Python 方言 —— 用中文写 Python,不用英文关键字

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages