1.1什么是 CQL
CQL(Chinese Query Language)是一套用 Python 实现的中文编程语言。它将 .cql 中文源码转译为等价的 Python 3 代码,覆盖了除元类、类型注解泛型等极少数高级特性之外的大多数 Python 原生语法,包含异步与 match 模式匹配。
由 CQFISH&喵酱出品,面向中文编程学习者、中文教学场景,以及对代码可读性有要求的项目。
cql
# hello.cql
函数 问候(名字):
返回 "你好," + 名字 + "!"
打印(问候("世界"))编译结果
# 生成的等价 Python 代码
def 问候(名字):
return "你好," + 名字 + "!"
print(问候("世界"))运行
$ cql run hello.cql
你好,世界!1.2特性总览
| 特性 | 说明 |
|---|---|
全中文关键字 | 如果 / 否则如果 / 否则、循环 / 当、中断 / 继续 / 跳过、函数 / 返回 / 类 / 继承、尝试 / 捕获 / 最终 / 抛出、导入 / 从 / 作为、伴随、延迟(lambda)、产量(yield)等 |
中英双运算符 | 加减乘除整除取余幂 与 + - * / // % ** 均可使用,逻辑、比较、位运算同样支持中文词 |
中文标识符 | 变量名、函数名、类名均可使用中文(关键字除外) |
中文内置函数别名 | 打印 / 输入 / 长度 / 范围 / 类型 / 求和 / 最大值 / 最小值 等,编译期自动替换为 Python 内置函数 |
中文类型注解 | x: 整数 = 5、函数 加(a: 整数, b: 整数) -> 整数 |
完整语法覆盖 | 控制流、函数、面向对象、异常、容器字面量、切片与解包、四种推导式、装饰器、with、lambda、海象运算符、异步与 match |
JavaScript 目标 | cql js / runjs / html 双目标转译,脱离 Python 在浏览器与 Node 中运行 |
包管理器 cqlip | install / uninstall / list,基于 ~/.cql |
中文适配子包 | 19 个 CQ 系列子包覆盖 Web、GUI、数据库、网络、办公等场景 |
1.3CQL 与 Python 的关系
CQL 并不是一门独立的运行时语言,而是建立在 Python 3 之上的源代码转译器。CQL 编译器把中文源码解析为语法树,再生成等价的 Python 3 代码,随后由 Python 解释器执行。
- 依赖 Python 3.7 及以上版本,唯一第三方依赖为 lark 解析器。
- 几乎全部 Python 语法都可以用中文书写,转换自然无感。
- 在 Python 中可以以库方式直接调用:
cql.compile('打印("你好")')。 - 同一份源码还可以转译为 JavaScript,语义与 Python 目标保持一致。
提示:字符串字面量、SQL 语句等内容不会被转译器改写,可以放心使用英文。
1.4应用场景
- 中文编程教学:消除语言障碍,让初学者专注算法与逻辑。
- 教学演示:中文关键字与中文函数名让课堂示例更容易理解。
- 可读性要求高的项目:业务代码读起来像自然语言。
- Web 快速原型:借助 cql html 生成自包含页面,浏览器双击即运行。
1.5开源协议
CQL 使用 MIT License 开源,可自由使用、修改与分发。由 CQFISH&喵酱出品。