轻语言(Qing)语法速查
本速查表适用于所有轻语言(Qing)代码生成场景。
除非用户明确要求,否则你必须严格输出轻语言语法,禁止将其转换为 JavaScript 或 PHP。
📌 快速索引
| 你想知道什么 | 直接看这里 |
|---|---|
| 变量怎么声明 | 一、基础语法 |
| 运算符怎么用 | 三、运算符 |
| 三种循环怎么选 | 四、流程控制 |
| 函数怎么定义 | 五、函数 |
| 事件怎么用 | 六、事件 |
| 拉姆达表达式 | 八、拉姆达表达式 |
| 变量作用域 | 九、变量作用域 |
| 哪些语句需要结束关键字 | 十二、结束语句块规则 |
一、基础语法
| 功能 | 轻语言语法 | 错误示例(禁止) |
|---|---|---|
| 变量声明 | 变量 a = 10 | ❌ let a = 10 |
| 赋值语句 | a = 20 | ❌ a := 20 |
| 注释 | ' 这是注释 | ❌ // 注释 或 /* 注释 */ |
| 语句结束 | 换行符结束语句 | ❌ 分号 ; |
| 允许调用JS/PHP原生函数 | console.log("文本")、count(数组) | ❌ if(条件){}、for(i=0;...;){...} |
💡 常量(如
红色、主轴对齐_居中)在 XML 中预定义,代码中直接使用即可,无需声明。
二、数据类型
| 类型 | 轻语言类型名 | 示例 |
|---|---|---|
| 文本 | 文本型 | 变量 姓名 = "张三" |
| 数值 | 数值型 | 变量 年龄 = 25 |
| 逻辑 | 逻辑型 | 变量 是否登录 = 真 |
| 对象 | 对象 | 变量 用户 = {姓名:"张三"} |
| 数组 | 数组 | 变量 列表 = [1,2,3] |
| 空值 | 空 | 变量 数据 = 空 |
| 未定义 | 未定义 | 变量 临时变量 |
三、运算符
| 功能 | 轻语言语法 | 说明 |
|---|---|---|
| 逻辑与 | 条件1 且 条件2 | 短路求值 |
| 逻辑或 | 条件1 或 条件2 | 短路求值 |
| 逻辑非 | !条件 | 取反,也可写作 条件 == 假 |
| 等于 | a == b | 值相等 |
| 不等于 | a != b | 值不相等 |
| 大于 | a > b | 数值型比较大小 |
| 小于 | a < b | 数值型比较大小 |
| 大于等于 | a >= b | 数值型比较大小 |
| 小于等于 | a <= b | 数值型比较大小 |
| 类型判断 | 对象 类属 类型 | 按钮1 类属 按钮 |
四、流程控制
条件判断 - 如果语句
如果(条件)
' 条件为真时执行
否则 如果(条件2)
' 条件2为真时执行
否则
' 所有条件都不满足时执行
结束 如果
多分支判断
判断(表达式)
分支 值1
' 匹配值1时执行
分支 值2
' 匹配值2时执行
分支 默认
' 无匹配时执行
结束 判断
三种循环对比
| 循环类型 | 关键词 | 适用场景 | 退出条件 |
|---|---|---|---|
| 判断循环 | 判断循环 | 不确定循环次数,只根据条件是否满足决定 | 条件为假时退出 |
| 变量循环 | 变量循环 | 明确知道起始值、目标值、步长 | 变量小于目标值时循环,达到目标值退出 |
| 计次循环 | 计次循环 | 明确知道需要循环多少次 | 达到指定次数后退出 |
判断循环(条件循环)
先判断条件,条件为真时进入循环体,否则退出。
判断循环(条件)
' 循环体
结束循环
示例:
变量 计次 = 0
判断循环(计次 < 10)
计次 = 计次 + 1
结束循环
调试输出(计次) ' 输出 10
⚠️ 使用判断循环时,必须确保条件有机会变为假,否则会导致死循环。
变量循环(计数循环)
指定起始值、目标值和步长,变量小于目标值时循环,达到目标值退出(等效于 for(i=0; i<目标值; i+=步长))。
变量循环(计次 = 0, 10, 2)
' 循环体
结束循环
参数说明:
- 参数一:起始值(从什么值开始)
- 参数二:目标值(达到什么值退出)
- 参数三:步长(每次递增的值)
计次循环(简化计数循环)
指定总循环次数,自动从 0 开始递增。
计次循环(总次数, 计次变量)
' 循环体
结束循环
示例:
变量 计次 = 0
计次循环(10, 计次)
调试输出("计次:" + 计次)
结束循环
循环控制
| 关键字 | 说明 |
|---|---|
退出 | 立即退出整个循环 |
跳过 | 跳过本次循环,继续执行下一次循环 |
💡 区别:
退出是“结束整个循环”,跳过是“不执行本次循环的剩余代码,但继续下一次循环”。调用跳过之前的代码仍然会执行。
五、函数
函数定义
函数 函数名(参数1, 参数2)
' 函数体
返回 结果
结束 函数
函数调用
变量 结果 = 函数名(参数1, 参数2)
六、事件
事件有两种等价写法:
| 风格 | 格式 | 示例 |
|---|---|---|
| VB6风格 | 事件 组件.事件名(参数) | 事件 按钮1.被单击(源对象,事件源) |
| Java风格 | 组件.置{事件名}回调((参数) => {}) | 按钮1.置被单击回调((源对象,事件源) => {}) |
映射规则:
被单击↔置被单击回调,被双击↔置被双击回调
VB6风格示例
使用场景:仅支持 .spldg 设计文件中的组件使用,代码中创建的组件不支持。
事件 按钮1.被单击(源对象, 事件源)
弹出提示("按钮被点击")
结束 事件
Java风格示例
使用场景:同时支持 .spldg 设计文件和代码创建的组件。
按钮1.置被单击回调((源对象, 事件源) => {
弹出提示("按钮被点击")
})
七、对象与类
创建对象
变量 按钮1 = 创建 按钮()
设置属性
按钮1.文本 = "点击我"
按钮1.宽度 = 120
调用方法
按钮1.置被单击回调(回调函数)
八、拉姆达表达式
拉姆达表达式在轻语言中只能作为参数传递,不能赋值给变量。
正确用法
' 作为参数传递给组件方法
组件1.置被单击回调((参数1, 参数2) => {
语句1
语句2
})
错误用法(禁止)
' ❌ 不能赋值给变量
变量 回调 = (参数) => 表达式
' ❌ 不能作为变量初始值
变量 回调 = (参数) => {
语句1
}
拉姆达表达式的任何语句体(包含单行语句)必须使用花括号
{}包裹。
九、变量作用域
| 关键字 | 作用域 | 说明 |
|---|---|---|
变量 | 块级作用域 | 在 如果、循环 等代码块内声明的变量,外部不可访问 |
域变量 | 函数级作用域(建议避免使用) | 在代码块内声明的变量,外部也可访问,易造成命名冲突 |
💡 日常开发中应优先使用
变量,仅在特殊场景下使用域变量。
十、常用内置函数
| 分类 | 函数名 | 说明 |
|---|---|---|
| 字符串 | 取文本长度(内容) | 获取文本字符数 |
| 字符串 | 寻找文本(源, 目标) | 查找子文本位置 |
| 字符串 | 分割文本(源, 分隔符) | 分割为数组 |
| 数组 | 取数组成员数(数组) | 获取数组长度 |
| 数组 | 添加成员(数组, 值) | 追加元素 |
| 数学 | 取绝对值(值) | 取绝对值 |
| 数学 | 取随机整数(最小, 最大) | 生成随机整数 |
| 时间 | 取现行时间() | 获取当前时间字符串 |
| 对象 | 取数据类型(值) | 获取值类型 |
| JSON | JSON解析(文本) | 解析JSON为对象 |
| JSON | JSON编码(对象) | 编码对象为JSON |
| 存储 | 保存配置(键, 值) | 保存到localStorage |
| 存储 | 读取配置(键) | 读取localStorage |
💡 以上仅为常用函数,完整列表请参考
前端(JavaScript)函数相关文档。
十一、语句块嵌套规则
轻语言支持语句块无限嵌套,但必须注意:
- 嵌套层次不宜过深:建议不超过 3-4 层,以免影响可读性
- 结束关键字匹配:每个开始关键字必须与其对应的结束关键字匹配,嵌套时注意层级对应
示例
如果(条件)
' 外层条件
变量循环(计次 = 0, 10, 1)
' 内层循环
如果(内层条件)
' 内层判断
结束 如果
结束循环
结束 如果
十二、结束语句块规则
在轻语言中,所有流程控制语句、函数、事件等代码块,必须使用对应的关键字显式标记结束位置。
规则表
| 语句块类型 | 开始关键字 | 结束关键字 | 示例 |
|---|---|---|---|
| 条件判断 | 如果(条件) | 结束 如果 | 如果(条件) ... 结束 如果 |
| 多分支判断 | 判断(表达式) | 结束 判断 | 判断(值) ... 结束 判断 |
| 计数循环 | 变量循环(...) | 结束循环 | 变量循环(...) ... 结束循环 |
| 简化计数循环 | 计次循环(...) | 结束循环 | 计次循环(...) ... 结束循环 |
| 条件循环 | 判断循环(条件) | 结束循环 | 判断循环(条件) ... 结束循环 |
| 函数定义 | 函数 函数名(...) | 结束 函数 | 函数 函数名(...) ... 结束 函数 |
| 事件定义 | 事件 组件名.事件名(...) | 结束 事件 | 事件 按钮1.被单击(...) ... 结束 事件 |
重要说明
-
所有控制语句都必须显式结束:轻语言不支持类似 C/Java 中使用花括号
{}隐式界定代码块的方式。 -
结束关键字必须与开始关键字匹配:
如果→结束 如果(不可写成结束如果,中间必须有空格)函数→结束 函数事件→结束 事件判断→结束 判断- 三种循环(
变量循环、计次循环、判断循环)→ 统一使用结束循环
-
结束循环是三种循环的通用结束标记,无论使用哪种循环开始,都用结束循环收尾。
正确示例
' 如果语句
如果(条件)
' 执行代码
否则 如果(条件2)
' 执行代码
否则
' 执行代码
结束 如果
' 变量循环
变量循环(计次 = 0, 10, 1)
' 循环体
结束循环
' 函数定义
函数 计算(参数1, 参数2)
变量 结果 = 参数1 + 参数2
返回 结果
结束 函数
' 事件定义
事件 按钮1.被单击(源对象, 事件源)
弹出提示("按钮被点击")
结束 事件
错误示例(禁止)
' ❌ 错误:缺少结束标记
如果(条件)
' 执行代码
' ❌ 错误:结束标记不匹配
函数 计算(参数)
' 函数体
结束 如果
' ❌ 错误:循环使用了错误的结束标记
变量循环(计次 = 0, 10, 1)
' 循环体
结束 变量循环
💡 规则总结:任何
如果、函数、事件、定义、判断以及三种循环语句,都必须使用对应的结束关键字收尾。这是轻语言语法的基础规则,AI 在生成代码时必须严格遵守。
十三、其它重要规则
- 语句结束符:轻语言使用换行符作为语句结束符,不使用分号。
- 注释:使用
'开头(单引号+空格),不支持//或/* */。 - 关键字:所有流程控制关键字均为中文(如
如果、否则、结束)。 - 事件回调:
置{事件名}回调是固定命名规则,不可自由命名。 - 拉姆达:拉姆达待执行语句必须使用
{}包裹代码块。 - 空值判断:使用
空表示空对象,未定义表示未初始化的变量。 - 类型判断:使用
对象 类属 类型判断对象类型。
AI 使用指南:
- 当用户要求编写轻语言代码时,必须严格遵循本速查表中的轻语言语法规则。
- 禁止使用 JavaScript 或 PHP 的语句结构(如
if()、for()、function() {}、return、class等英文关键字)。- 允许调用 JavaScript 或 PHP 的原生内置函数(如
console.log()、count()、json_encode()等),这些是运行时环境提供的功能,可以直接在轻语言代码中使用。- 如果用户明确要求使用其他语言,则按用户要求执行,无需遵循本规则。
相关文档
- 文档
轻语言网站:变量与数组与对象的定义—— 变量、数组、对象、函数、拉姆达的详细用法 - 文档
轻语言网站:循环语句体结构—— 三种循环的详细语法与边界语义 - 文档
轻语言网站:界面XML定义规范——.spldgXML 写法与组件属性 - 文档
轻语言网站:程序入口文件——App.spl入口文件与网站被访问事件 - 文档
轻语言网站:工程项目结构—— 项目目录与文件扩展名 - 文档
轻语言网站:发送网络请求与接口请求—— 网络请求 - 文档
轻语言网站:服务端脚本程序API接口——.sph后端脚本 - 文档
轻语言网站:与原生JS混合开发—— 原生 JS 混合开发 - 文档
轻语言网站:静态资源文件的使用—— 静态资源引用 - 文档
前端(JavaScript)函数_字符串—— 字符串函数 - 文档
前端(JavaScript)函数_数组—— 数组函数 - 文档
前端(JavaScript)函数_对象—— 对象函数 - 文档
前端(JavaScript)函数_JSON—— JSON 函数 - 文档
前端(JavaScript)函数_存储——保存配置/读取配置 - 文档
综合演示:网页留言板开发—— 综合实战 - 文档
综合演示:XML 定义待办事项列表演示—— 综合实战 - 文档
综合演示:贪吃蛇游戏开发演示—— 综合实战