Comfort Lang
Comfort Lang 是一款处于早期渐进式迭代阶段的命令式编程语言,单文件解释器,仅依赖 Python3.6+,MIT 协议。主打极致清爽的交互式编程体验。
Comfort Lang 不是 Python 的简化版,重构人机交互逻辑;Python 仅作为扩展生态。版本:v1.0.1
前往 GitHub 仓库
提示: REPL交互模式,直接输入变量或者表达式回车自动输出结果,不需要打印函数。
快速上手
克隆仓库并启动解释器:
git clone https://github.com/dxiangwiki/comfort-lang.git
cd comfort-lang
python comfort_lang.py
出现提示符 > 即进入 Comfort Lang REPL。输入 exit 退出终端。
变量声明 def
使用 def 批量声明多个变量。
- 经过
def声明,但尚未赋值,读取返回[None] - 从未声明过的变量,读取返回
[null]
> def a b c
[success]
> a
[None]
> d
[null]
批量赋值
支持逗号分隔批量赋值,字符串、括号内部的逗号不会被错误拆分,支持转义引号。
> a=10,b=20
[success]
> a
[10]
> a + b
[30]
> s="he said \"hello\""
[success]
> s
[he said "hello"]
函数定义
箭头语法定义顶层表达式函数:function 名称=(参数)=>表达式
> function add=(x,y)=>x+y
[success]
> add(a,b)
[30]
> add(50,60)
[110]
# 无参数函数
> function hello=()=>999
[success]
> hello()
[999]
函数环境快照
定义函数时会对当前全局环境做深度拷贝快照。函数捕获定义时刻的变量状态。
后续对全局变量重新赋值、修改列表/字典等可变对象,不会影响已经创建完成的函数。嵌套函数能力将在后续版本迭代补齐。
> def arr
[success]
> arr=[1,2,3]
[success]
> function get_arr=()=>arr
[success]
> get_arr()
[[1, 2, 3]]
> arr.append(99)
[None]
> get_arr()
[[1, 2, 3]]
REPL控制台完整演示
> def a b
[success]
> function add=(x,y)=>x+y
[success]
> a=100,b=200
[success]
> a
[100]
> b
[200]
> a + b
[300]
> add(a,b)
[300]
> exit
👋 感谢使用 Comfort Lang!
返回状态标记
[success]:语句执行成功[None]:变量已声明,但还没有赋值;部分内置方法返回空结果[null]:变量不存在,从未声明[error]:语法错误或者运行异常
内置函数
可以直接调用经过安全过滤的 Python 内置函数,无需额外导入。危险系统相关函数已屏蔽。
> abs(-99)
[99]
> len("Comfort Lang")
[12]
> max(10,20,99)
[99]
> sum([1,2,3,4,5])
[15]
当前限制
⚠️ 安全提示
✅ 本地使用完全安全:下载至个人设备运行交互式 REPL,可正常 clone、Star、Fork,支持公开分享与二次迭代。
❌ 不建议直接部署为公网在线后端服务:解释器内部使用 Python eval 执行表达式,即便配置危险函数黑名单,仍无法完全抵御外部不可信输入的逃逸风险。
项目处于早期渐进式迭代阶段,优先面向本地交互开发场景,暂不作为线上服务组件使用,后续会持续扩展语法能力。
function仅支持顶层命令定义,不支持在表达式内部嵌套定义函数,暂未实现完整词法闭包。- 当前仅提供 REPL 交互模式,暂不支持读取执行
.cl脚本文件。 - 暂不支持
{}代码块、if / while 语句,目前仅支持表达式运算。 - 后续版本会逐步补齐语句块、条件、循环、脚本文件加载等能力。