可帮助中文编程语言开发者快速获得完整工具链,避免重复开发。通过轻量适配器接入任意中文语言,提供统一在线IDE、包管理器、LSP、REPL、文档站及VSCode扩展等核心功能。【此简介由AI生成】
言埠 YanPub
万言归埠,一站集成。
中文编程语言统一基础设施。一个框架,接入任意中文语言,即刻获得完整工具链。
问题
当前 10+ 种中文编程语言各自独立开发工具链——Playground、REPL、包管理器、LSP、VSCode 扩展、文档站——大量重复劳动。
方案
语言即插件。每种语言只需实现一个轻量适配器,即可获得:
- YanPlay — 统一在线 IDE,一键切换语言
- YanPkg — 统一包管理器,跨语言依赖
- YanLSP — 统一语言服务协议,自动补全/诊断
- YanREPL — 统一交互式环境,语言热切换
- YanDocs — 统一文档站,语言对比
- YanVSCode — 一个扩展支持所有语言
快速开始
# 安装
pip install -e .
# 安装 Playground/LSP 可选依赖
pip install -e ".[playground,lsp]"
# 列出所有已支持语言
yanpub languages
# 运行段言代码
yanpub run duan hello.duan
# 启动 REPL(支持语法高亮和补全)
yanpub repl duan
# 启动 Playground(浏览器在线 IDE)
yanpub playground
# 安装包
yanpub pkg install duan:web-framework
# 启动 LSP 服务
yanpub lsp duan
# 生成文档站
yanpub docs --output ./site
# 语言对比
yanpub compare
yanpub compare --from duan --to yan
已接入语言(10种)
| 语言 | ID | 版本 | 关键字 | 适配方式 |
|---|---|---|---|---|
| 段言 Duan | duan | 1.3.8 | 162 | 子进程 |
| 言 Yan | yan | 1.0.0 | 47 | 子进程 |
| 墨言 Moyan | moyan | 0.1.0 | 25 | 子进程 |
| 心语 Xinyu | xinyu | 0.1.0 | 46 | 子进程 |
| 知行 Zhixing | zhixing | 0.1.0 | 37 | 子进程 |
| 言律 Yanlv | yanlv | 2.0.0 | 62 | 子进程 |
| 言知 Yanzhi | yanzhi | 0.1.0 | 52 | 子进程 |
| 明道 Mingdao | mingdao | 0.1.0 | 47 | 子进程(Racket) |
| 翰语 Hanyu | hanyu | 0.1.0 | 48 | 子进程(LLVM) |
| 趣言 traeyan | traeyan | 0.1.0 | 119 | 子进程 |
架构
详见 DESIGN.md
yanpub
├── core/ # 核心抽象:适配器协议、注册中心
├── adapters/ # 各语言适配器(10种)
├── pkg/ # 统一包管理器
├── playground/ # 统一 Playground
├── lsp/ # 统一 LSP 服务
├── repl/ # 统一 REPL
├── docs/ # 统一文档系统 + 语言对比
└── vscode/ # VSCode 扩展
CLI 命令一览
| 命令 | 说明 |
|---|---|
yanpub run <lang> <file> |
运行指定语言的代码文件 |
yanpub repl [lang] |
启动交互式 REPL |
yanpub languages |
列出所有已注册语言 |
yanpub playground |
启动在线 Playground |
yanpub lsp <lang> |
启动 LSP 服务 |
yanpub pkg install <pkg> |
安装包 |
yanpub pkg list |
列出已安装包 |
yanpub pkg search <q> |
搜索包 |
yanpub pkg publish <dir> |
发布包 |
yanpub docs |
生成文档站 |
yanpub compare |
语言对比(相似度排行 + 语法对比表) |
yanpub compare --from X --to Y |
迁移指南 |
yanpub compare <concept> |
特定概念对比 |
适配器开发
创建一个新适配器只需 2 个文件:
adapters/mylang/
├── adapter.yaml # 语言元信息
└── adapter.py # 适配器实现(继承 SubprocessAdapter)
最小适配器示例:
from yanpub.core.adapter import SubprocessAdapter
class MyLangAdapter(SubprocessAdapter):
def __init__(self):
super().__init__(
name="我的语言",
lang_id="mylang",
version="0.1.0",
extensions=[".my"],
run_command=["python", "-m", "mylang", "run"],
keywords=["定义", "如果", "否则", "当", "返回"],
primary_color="#FF6600",
)
适配器会被自动发现和加载,无需额外注册。
性能
- 启动时间 ~0.24s(10个适配器懒加载)
- 关键字首次访问 ~0.38s(动态从项目加载),缓存后 0s
- 932 个测试全部通过
License
MIT