1. 验证无优先级向量求值顺序
量化研究员背景
刚从 Python 转向 KDB+/q 进行高频行情分析,对非传统优先级的算术逻辑感到困惑。
问题
需要确认复合数学表达式中运算符的执行先后顺序,避免数据特征计算错误。
如何使用
输入 `2*3+4` 并勾选“显示求值顺序徽章”。
qCode = "2*3+4", showOrder = true, showFunctional = false结果
清晰显示先归约 3+4 为 7,再归约 2*7 为 14 的步骤和求值徽章标记。
Elysia Tools
导航
Data Visualization
把 q 表达式与 q-sql 查询解析成带注解的树:右到左求值顺序、token 分类、功能形式 select 与 splayed 列属性。
详情
实现 q 的唯一求值规则(无优先级、左于右)、副词/迭代器解析、模板查询短语切分与逗号陷阱、功能形式生成、时间转换(日期是自 2000.01.01 的天数)以及四种 splayed 属性。
执行
填写表单、运行工具,并在同一页面查看结果。
案例
相关内容
工具使用指南
KDB+ q SQL 向量表达式解析树讲解器是一款面向 q 语言开发者的语法与求值可视化工具,能够将向量表达式和 q-sql 查询解析为带注释的语法树,直观展示从右到左求值顺序、Token 分类、功能形式语法转换以及分区存储属性参考。
背景
刚从 Python 转向 KDB+/q 进行高频行情分析,对非传统优先级的算术逻辑感到困惑。
问题
需要确认复合数学表达式中运算符的执行先后顺序,避免数据特征计算错误。
如何使用
输入 `2*3+4` 并勾选“显示求值顺序徽章”。
qCode = "2*3+4", showOrder = true, showFunctional = false结果
清晰显示先归约 3+4 为 7,再归约 2*7 为 14 的步骤和求值徽章标记。
背景
正在重构 HDB 数据查询接口,需要将硬编码的 select 模板重构为动态功能调用。
问题
需要准确拆解 where 条件与 by 分组,并获取等价的 functional select 代码及日期数值映射。
如何使用
输入 `select max price by sym from trade where date=2026.09.07, price>10`,勾选显示求值顺序和功能形式选项。
qCode = "select max price by sym from trade where date=2026.09.07, price>10", showOrder = true, showFunctional = true结果
生成分解后的 Where/By/Select 语法树、对应的 ?[trade;...] 功能代码块以及 2026.09.07 映射为 9746 的日期注解。
q 语言没有传统运算符优先级,统一采用从右向左求值规则,因此先计算 3+4 得 7,再计算 2*7 得 14。
它是 q-sql select 的底层函数式表达,参数依次代表目标表 t、where 过滤条件 c、by 分组表达式 b 以及聚合/选择字典 a。
解析器会将 q 日期转换为从 2000.01.01 起算的天数(如 2026.09.07 对应 9746),并标注内部底层数值。
与常规表达式不同,q-sql where 子句中以逗号分隔的多条件按从左到右依次过滤,该工具会在树中明确标注此执行阶段。
支持解析并展示 q 中的四种核心属性:sorted (`s#`)、parted (`p#`)、grouped (`g#`) 和 unique (`u#`)。