CQL 教程/CQL 入门/简介

CQL 简介

了解 CQL(Chinese Query Language)是什么,它的设计目标与核心特性。

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 中运行
包管理器 cqlipinstall / 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&喵酱出品。