言知中文编程语言计划书 by WorkBuddy

言知(Yanzhi)项目规划书

AI自动编程by WorkBuddy

言知 · 心之所向,言即所行 从 zhixing (知行) 与 yanplan (言·计) 融合而来


一、项目概述

1.1 名称释义

言知(yán zhī)------"言"是表达,"知"是结构;说出的话就是有结构的知识。

涵义 对应编程
言语、表达、语法、句式 自然意合语法、无空格分词、DSL 模板
知识、结构、类型、抽象 AST、宏系统、类型检查器、引用求值

省略了一个"行"字------不是没有,而是不言而喻:言知即行

1.2 项目定位

一门根植于汉语思维结构的中文编程语言,同时具备:

  • 可读性------中文母语者可直接阅读和书写,无需"思维翻译"
  • 表达力------函数式核心 + 宏系统,不输 Lisp
  • 实用性------双轨设计(原生执行 + Python 生态调用)
  • 工程完备------类型检查、LSP、自举、包管理

1.3 血统与传承

复制代码
zhixing (知行)                     yanplan (言·计)
    │                                   │
    ├── 实现代码                     ├── 语法设计规范
    ├── 编译器/求值器               ├── 项目架构设计
    ├── 标准库/LSP                  ├── 言律句式规范
    ├── 同像性/宏                   ├── 自举实施方案
    └── 百家姓/中文数字              └── 场景模板/成语模式
    │                                   │
    └───────────────┬───────────────────┘
                    │
            ┌───────▼───────┐
            │    言知         │
            │  yanzhi        │
            │                │
            │ 知为骨,言为表  │
            │ 行为脉,合为意  │
            └───────────────┘

二、核心理念:三柱哲学

汲取前两轮头脑风暴的结论,言知的设计围绕三个哲学支柱展开:

2.1 知(Zhi)--- 结构化计算

继承自 zhixing 的核心实现能力:

特性 作用 实现状态
无空格分词 贪心最长匹配,中文无需空格 ✅ 已有(pre_tokenizer.py)
中文关键字 定、函、若、则、遍历 ✅ 已有
中文动词运算符 加、减、乘、皆(map)、只(filter) ✅ 已有
柯里化 参数不足自动生成闭包 ✅ 已有(Curry 类)
同像性 代码即数据,' 引用, 求值 ✅ 已有
宏系统 宏定义与展开 ✅ 已有(expander.py
类型检查 类型推导 ✅ 已有(checker.py
标准库 数学、字符串、文件、网络 ✅ 已有
LSP 语言服务器协议 ✅ 已有

2.2 言(Yan)--- 自然意合表达

汲取自 yanplan/言律 的设计哲学:

特性 说明 优先级
言律句式模板 当...就... 要是...否则... 每隔...做... P1
主题链补全 省略主语/宾语的上下文推断 P1
流水句因果链 "天黑了。没人。灯亮。" → 隐式 if 链 P2
成语式编程单元 "削峰填谷""守株待兔"等结构化模板 P2
动词白名单 领域专用动词语义映射 P2
作用域块语法 "...的时候:" 定义局部作用域 P1
四字格模式 利用汉语四字节奏增强结构记忆性 P3

2.3 行(Xing)--- 动态语义与生态

"言知即行"------说出来就是执行:

特性 说明 优先级
管道 数据从左向右流动,中文逗号作链式操作符 ✅ 已有
双轨设计 $() 数学表达式 + {``{}} Python 代码块 ✅ 已有
VM/字节码 独立虚拟机,不依赖 Python 运行时 P1
自举 用言知编写言知的编译器 P1(已有方案)
包管理 中文包名、语义版本 P3
REPL 增强 语法高亮、历史回溯、补全 P2

三、总体架构

3.1 寻址机制(言 → 知 → 行 互转流程)

复制代码
用户输入:定平方=函x乘x x。
                                    言层
  无空格分词 → [定][平方][=][函][x][乘][x][x][。]
                                    知层
  语法分析 → Define(name="平方", value=Lambda(params=[x], body=Call(
              verb="乘", args=[Ident("x"), Ident("x")])))
  类型检查 → num → num
                                    行层
  求值执行 → 环境中创建函数 "平方"
  REPL 回显 → "平方定义完成"
                                    回到言层

3.2 双轨逃逸机制

复制代码
$() 数学表达式:      纯数学符号,精确计算
  $(a + b * (c - d))

{{}} Python 代码块: 调用 Python 生态
  {{os.listdir(".")}}

中文语句:            自然语法,逻辑控制
  若 x 大 10 则 "大了" 否则 "小了"

三种语法在同一个源文件中可以自由混用,编译时自动识别上下文切换。


四、从 zhixing 到 yanzhi 的演化路径

阶段〇:遗产保留(不丢失任何现有功能)

言知完整继承 zhixing 所有已有能力:

模块 当前文件 处理方式
预分词层 compiler/pre_tokenizer.py 保留 + 扩展中文句式识别
词法分析 compiler/lexer.py 保留
语法分析 compiler/parser.py 保留 + 新增言律句式规则
AST compiler/ast.py 保留 + 新增自然语句节点
宏展开 compiler/expander.py 保留
代码生成 compiler/codegen.py 保留
求值器 runtime/evaluator.py 保留
VM/字节码 runtime/vm.py 保留 + 优化
REPL runtime/repl.py 保留 + 增强
类型检查 typechecker/checker.py 保留
LSP lsp/server.py 保留
标准库 stdlib/ 保留 + 扩展
示例 examples/ 保留 + 增加言律示例

阶段一:言律集成(P0 核心)

在 zhixing 基础上新增言律自然语言层的模块:

新模块 功能 依赖
yan/syntax_templates.py 句式模板解析(当→if,每隔→loop) pre_tokenizer
yan/topic_chain.py 主题链补全,省略主宾语的上下文恢复 parser
yan/scope_block.py "的时候:"作用域块解析 parser
yan/action_vocab.py 动词白名单,高层语义映射 evaluator
yan/dsl_factory.py 宏工厂,把句式模板编译为宏定义 expander

阶段二:VM 独立化(P1 性能)

复制代码
当前:Python AST 求值器
目标:独立字节码 VM

zhixing vm.py ──扩展──→ yanzhi bc_vm.py
                           │
                           ├── 指令集设计(24-36 条指令)
                           ├── 寄存器/栈混合模型
                           ├── 字节码序列化/反序列化
                           └── GC(标记清除或引用计数)

阶段三:自举完成(P1 独立性)

沿用 yanplan 已有的自举方案:

复制代码
阶段0:Python 编写的言知编译器(当前状态)
   ↓
阶段1:用言知重写编译器核心(词法 + 语法 + AST)
   ↓
阶段2:阶段0 编译 阶段1 → 获得言知编译器
   ↓
阶段3:言知编译器编译自身 → 自举完成
   ↓
验证:两轮编译输出一致

阶段四:生态建设(P2-P3)

  • 包管理器(中文报名系统)
  • IDE 插件(VS Code / 编辑器 LSP 增强)
  • 言律模板库("削峰填谷"等成语式编程模块)
  • 教学场景适配(面向儿童的言律 Lite)

五、语法设计汇总

5.1 保留的 zhixing 语法

zhixing

复制

复制代码
# 定义
定 x = 5。
定 平方 = 函 n 乘 n n。

# 条件
若 x 大 10 则 "大" 否则 "小"。

# 管道
列 1 2 3 4 5,皆乘2,只大3,印。

# 同像性
定 code = '加 5 3。
行 'code。

# 宏
宏 当(条件, 动作):
  行 '若 $(条件) 则 $(动作)

5.2 新增的言律自然语法

zhixing

复制

5.3 双轨语法

zhixing

复制

复制代码
# 数学表达式
定 x = $(a + b * (2 - c / d))

# Python 代码块
定 files = {{os.listdir(".")}}

# 混合使用
定 result = 列 $(range(10)),皆 {{lambda x: x * 2}},印。

六、项目目录结构


七、开发路线图(4 阶段 · 约 6 个月)

第一阶段:言律集成(第 1-2 月)

任务 产出 备注
建立 yanzhi 项目结构 目录树搭建,从 zhixing 迁移代码 保留 git 历史
言律句式模板引擎 syntax_templates.py 实现 6 种句式 当→if,每隔→loop 等
主题链补全器 topic_chain.py 实现上下文栈 栈式记忆 + 最近引用
作用域块解析 scope_block.py 支持"的时候:"
言律语法测试 30+ 测试用例 句式模板 + 主题链
文档同步 更新语法设计规范 新增言律语法章节

验收标准

  • ✅ 以下代码可执行:

zhixing

复制

复制代码
当 门开了,就开灯。
每隔 5 分钟,查温度。
回家的时候:灯亮。空调开。
  • ✅ 主题链可补全省略主语
  • ✅ 现有 zhixing 全部测试通过

第二阶段:VM 独立化(第 2-3.5 月)

任务 产出 备注
指令集设计 24-36 条指令,覆盖现有 AST 节点 参考 Lua VM
字节码编译器 compiler_bc.py AST → 字节码
VM 解释器 vm.py 字节码执行引擎 栈模型
性能基准测试 对比 AST 求值器与 VM 目标 2-3x 提升
GC 实现 标记清除或引用计数

验收标准

  • ✅ AST 求值器与 VM 输出一致
  • ✅ VM 性能不低于 AST 求值器
  • ✅ 全部标准库可在 VM 上运行

第三阶段:自举(第 3.5-5 月)

任务 产出 备注
编译器核心重写(言知) 词法 + 语法 + AST 自举阶段 1
自举验证 两轮编译一致性 自举阶段 2-3
性能优化 内联缓存、常量折叠
错误信息增强 言知语言报错信息 中文错误提示

验收标准

  • ✅ 言知编译器可编译自身源码
  • ✅ 两轮编译输出字节码一致
  • ✅ 自举后言知可脱离 Python 编译器独立运行

第四阶段:生态建设(第 5-6 月+)

任务 产出 优先级
REPL 增强 语法高亮、历史补全 P2
LSP 功能完善 跳转定义、自动补全 P2
VS Code 插件 语法高亮、代码片段 P2
言律模板库 10+ 成语式编程模块 P2
包管理器原型 yanzhi install 包名 P3
教学文档 《言知入门》系列 P3

八、关键设计决策(记录为未来参考)

8.1 言律句式的实现方式

决策:用宏实现,而非修改解析器。

理由

  • 宏在运行时定义,不需要修改编译器
  • 用户可自行扩展句式模板
  • 保持解析器简单、可验证

python

复制

复制代码
# 宏的实现思路
# 在 expander.py 中注册言律句式宏
# 用户输入 "当 A 就 B" 时:
# 1. pre_tokenizer 拆分为 [当][门开了][就][开灯]
# 2. parser 识别为 Call(verb="当", args=[...])
# 3. expander 展开宏当 →
#    Call(verb="若", args=[条件, Call(verb="则", args=[动作])])
# 4. evaluator 正常求值

8.2 主题链补全策略

决策:栈式记忆 + 最近引用绑定 + 置信度阈值。

复制代码
主题栈结构:
[
  {"subject": "灯", "type": "device", "last_action": "打开"},
  {"subject": "温度", "type": "sensor", "last_value": 28}
]

省略解析:
"调暗一点" → 扫描栈顶 → 匹配 "灯" → 灯.dim(30%)
"高了"     → 扫描栈顶 → 匹配 "温度" → 温度 > 阈值

8.3 双轨货币兑换策略

决策:编译时标记,运行时隔离。

  • $():编译为数学指令序列
  • {``{}}:编译为 Python C API 调用或进程间通信
  • 中文语句:编译为言知 VM 指令
  • 三种代码可互相调用,调用处做类型转换

8.4 自举优先级

决策:先自举语法分析部分,再逐步覆盖全部能力。

复制代码
自举顺序:
1. parser(核心递归下降算法)
2. lexer(词法分析)
3. pre_tokenizer(无空格分词)
4. ast(节点定义)
5. evaluator(简单求值)
6. typechecker(可选)
7. expander、codegen 等

九、风险与应对

风险 概率 影响 应对策略
自举中途无法通过自编译 分模块逐步自举,每一模块自举后立即验证
言律句式覆盖不够通用 句式宏开放给用户自定义,不硬编码在编译器
VM 性能不如预期 保留 AST 求值器作为 fallback,VM 仅作为优化层
主题链补全过于复杂 限定上下文窗口大小为 3,复杂情况让用户显式指定
Python 双轨引入安全风险 {``{}} 默认禁用,需要 --allow-python 标志启用

十、总结

言知不是一个"新语言"。它是在问:如果汉语母语者不需要"思维翻译"就能写程序------这个语言该怎么设计?

zhixing 用代码回答了"可以这样做"------它是 Lisp 的中文化身,证明了中文关键字 + 动词运算符 + 管道可以写出图灵机、Brainfuck 解释器、快速排序。

yanplan / 言律用设计回答了"应该这样做"------它是汉语自然语句的编程表达,证明了 "当_就_" "天黑了。灯亮了。" 可以被精确解析为计算逻辑。

言知把两者合在一起,用 zhixing 的宏系统承载言律的自然语法,用 zhixing 的同像性实现"言即知,知即行"。

定言知=函心'言'行。 (定义言知 = 把心里的"言"变成可执行的"行"。)

相关推荐
楼田莉子1 小时前
C++17新特性:__had_include/属性/求值顺序规则
开发语言·c++·后端
香蕉鼠片1 小时前
Python进阶学习
开发语言·python
摇滚侠2 小时前
Java 零基础全套教程,File 类与 IO 流,笔记 177-178
java·开发语言·笔记
ytttr8732 小时前
OPC UA 协议栈 C 语言实现
c语言·开发语言·mfc
song5012 小时前
Ascend C 算子开发:从入门到上手
c语言·开发语言·图像处理·人工智能·分布式·flutter·交互
小a杰.2 小时前
Ascend C编程语言进阶:高性能算子开发技巧
android·c语言·开发语言
全糖可乐气泡水2 小时前
Codex适配国产信创环境安装部署与技术适配全解析
开发语言·git·python·算法·百度
雨落在了我的手上2 小时前
初始java(十):类和对象(⼆)
java·开发语言
LeocenaY2 小时前
搜集的一些测开面试题
开发语言·python
threelab3 小时前
Three.js 加载 3D Tiles 瓦片数据 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器