跳到主要内容

2.1 词法与书写规则

DataQL 脚本由关键字、标识符、字面量和运算符组成。关键字区分大小写,语句末尾的分号可以省略。

注释与空白​

// 注释延续到行末;/* ... */ 可以跨行,不支持嵌套。字符串和代码片段中的内容由各自的规则处理。

/* 计算总价 */
var price = 20;
var count = 3; // 数量
return price * count;

空格、制表符和换行可以分隔记号。3-1 与 3 - 1 含义相同。

关键字​

关键字用途
var定义或重新绑定变量
run执行表达式,忽略结果
return、throw、exit返回、抛错、结束整个查询
if、else条件分支
assert校验布尔条件
hint设置执行选项
import、as导入资源并指定名称
true、false、null布尔值与空值

标识符​

普通标识符满足 [_a-zA-Z][_0-9a-zA-Z]*。包含中文、空格或关键字的名称可用反引号包裹;对象字段也可以通过字符串下标访问。

var `用户` = {"姓名": "Alice", "display-name": "Alice A"};
return [`用户`.`姓名`, `用户`['display-name']];

字符串​

字符串可用单引号或双引号包裹,支持 \n、\r、\t、\b、\f、\\、\'、\"、\uXXXX 转义。字符串不能直接跨行,换行使用 \n。

return ["Hello", 'DataQL', '\u0041', 'line1\nline2'];

分隔符与运算符​

记号用途
()函数参数、表达式分组
{}语句块、对象、参数访问
[]列表、下标
,、:、;分隔元素、键值和语句
=var 赋值、Hint 配置、片段参数表达式
->定义函数
=>转换结果结构
@@name(...)<% ... %>定义代码片段

算术、比较、逻辑和位运算的用法及优先级见表达式。