# cjp-language **Repository Path**: dongchao139/cjp-language ## Basic Information - **Project Name**: cjp-language - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-05-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介([文档](https://gitcode.com/cangjie-script/cjp-language/tree/main/docs)) 这是一个还在实验阶段的脚本语言。 寄生在仓颉语言上,他们的代码可以互相调用。由于使用了全手动的解释方式, 允许用户自己注册自己的关键字, 实现贴近项目层的语言。 # cjp 是什么? cjp 这个名字有两个含义 - cangjie+php 的缩写,这是融合两门语言优点的语言。 - cangjie+plus 的缩写,这是增强仓颉表达能力和码字速度的语言。 # cjp 能做什么? - cjp 直接运行在仓颉运行时,所以仓颉的能力都能被 cjp 使用。 - cjp 可以扩展仓颉的使用场景,例如游戏的临时活动,无需发版本就可以热更新。 - cjp 是一个脚本语言,源码公开,敏感功能可以交付源码。 # 为什么使用 cjp? - 仓颉是纯静态语言,cjp 是纯动态语言。编写业务功能效率天然比仓颉快。 - 针对 UI 开发提供了友好的语法糖。 - 用户可以自己注册内部关键字处理逻辑,实现项目层的语法糖。 - 需要热更新的功能模块,可以使用 cjp 能力。 ### 基本语法体系 这里写一个例子, 在例子中,进行讲解。 ``` // 这是一个函数 function div(object $jv): string { // echo是输出语法, 输出后续的内容 echo "
{$jv->text}
"; } // 运行上面函数 div({text: "你好"}) ``` 上面运行结果是: `
你好
` ##### 针对 UI 的语法例子 对 UI 开发设计了友好的语法糖 ``` function div(object $jo) { return "
{$jo->body[0]}
"; } function h1(object $jo) { return "

{$jo->content}

"; } $ui = div { style: { hight: 190px }, body: [ h1 { content: "hello world" } ] } echo $ui; ``` ### TODO - [ ] 兼容基本的 php 语法(不保证全部), 在不使用增强语法时, 可以直接用 php 生态下的 IDE。 - [ ] 提供 UI 友好的语法糖。 - [ ] 错误模块, 提供中文优先的错误提示。 - [ ] vscode 插件, 提供语法检查。 - [ ] 语法稳定后, 开始优化性能。 ### 为什么使用 php 语法作为基础 1. 最优先考虑是 js, 但是因为有官方支持的 atkts 了, 而且 js 异步方式不同, 不是很好复用仓颉运行时。 2. 因为变量$符号的设计, 扩展语法不容易冲突。 3. 使用成熟语言语法, 减少开发过程决策成本(如果决策错误可能导致后续无法继续)。 ### 注意 当前阶段依然属于初级阶段,现在为了代码复用率不是很注重性能,未来语法层进入稳定阶段后,再着手优化,当前的设计原理必然有 3 倍的性能损耗,未来补充更多的 ast 结构和更多的代码片段预测优化,性能对比下初始阶段必然有可观的性能改进。 var 用户 = 张三 echo 用户