C

cangjie-script

这是仓颉语言的脚本相关库

README

简介(文档

这是一个还在实验阶段的脚本语言。

寄生在仓颉语言上,他们的代码可以互相调用。由于使用了全手动的解释方式, 允许用户自己注册自己的关键字, 实现贴近项目层的语言。

cjp 是什么?

cjp 这个名字有两个含义

  • cangjie+php 的缩写,这是融合两门语言优点的语言。
  • cangjie+plus 的缩写,这是增强仓颉表达能力和码字速度的语言。

cjp 能做什么?

  • cjp 直接运行在仓颉运行时,所以仓颉的能力都能被 cjp 使用。
  • cjp 可以扩展仓颉的使用场景,例如游戏的临时活动,无需发版本就可以热更新。
  • cjp 是一个脚本语言,源码公开,敏感功能可以交付源码。

为什么使用 cjp?

  • 仓颉是纯静态语言,cjp 是纯动态语言。编写业务功能效率天然比仓颉快。
  • 针对 UI 开发提供了友好的语法糖。
  • 用户可以自己注册内部关键字处理逻辑,实现项目层的语法糖。
  • 需要热更新的功能模块,可以使用 cjp 能力。

基本语法体系

这里写一个例子, 在例子中,进行讲解。

// 这是一个函数
function div(object $jv): string {
    // echo是输出语法, 输出后续的内容
    echo "<div>{$jv->text}</div>";
}

// 运行上面函数
div({text: "你好"})

上面运行结果是: <div>你好</div>

针对 UI 的语法例子

对 UI 开发设计了友好的语法糖

function div(object $jo) {
    return "<div hight='{$jo->style->hight}'> {$jo->body[0]} </div>";
}

function h1(object $jo) {
    return "<h1>{$jo->content}</h1>";
}

$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 用户

精选项目
1

这是一个模版引擎。基于 html 标签的渲染,在符合原生标签格式情况,扩展出来标签渲染器,属性渲染器,文本渲染器等。每种渲染器都支持覆盖,实现多平台渲染,无痛切换 UI 框架等。

3

cjp-language项目的最小WEB使用例子

  • 使用cjp-language编写的语言服务器
    Cangjie
    2
    0
    MIT_License
    更新于 2025年4月2日
    Star
  • 由仓颉实现的脚本语言
    Cangjie
    10
    1
    MIT
    更新于 2025年5月21日
    Star
  • 这是一个模版引擎。基于 html 标签的渲染,在符合原生标签格式情况,扩展出来标签渲染器,属性渲染器,文本渲染器等。每种渲染器都支持覆盖,实现多平台渲染,无痛切换 UI 框架等。
    Cangjie
    1
    0
    MIT_License
    更新于 2025年3月27日
    Star
  • 把部分 php 函数使用仓颉重新实现,实现了cjp-language的导入入口
    Cangjie
    0
    0
    MIT_License
    更新于 2025年3月13日
    Star
  • js 部分函数的仓颉实现代码,实现了cjp-language导入入口
    0
    0
    MIT_License
    更新于 2025年3月12日
    Star
  • cjp-language项目的最小WEB使用例子
    Cangjie
    3
    0
    MIT_License
    更新于 2025年3月13日
    Star
  • 在脚本中支持使用 sql 原生语句,支持安全地插值,自动预处理 sql 查询语句。
    Cangjie
    0
    0
    MIT
    更新于 2025年5月21日
    Star
  • 暂无简介
    0
    0
    更新于 2025年4月2日
    Star
  • cjp-language 这个项目的构建程序, 交互式程序。
    0
    0
    MIT_License
    更新于 2025年3月12日
    Star
查看全部项目 >
成就
16
Star
1
Fork
7.65 K
Download
常用语言
Cangjie
HTML
PHP
Shell