DSL 简介
什么是 DSL?
DSL(Domain Specific Language,领域特定语言)是一种专为问卷和考试系统打造的逻辑表达语言。通过简洁直观的文本配置,用户可以轻松实现显示隐藏、分支跳转、自动赋值、必填校验、内容替换、选项互斥等复杂问卷逻辑——远超普通可视化配置器的表达能力。
我们的 DSL 有多强?
- 更强表达力:支持多题、多选项组合逻辑,任意嵌套,极限复杂场景轻松拿捏
- 真正“响应式”:任何涉及题目答案的变化,所有 DSL 规则均可自动实时触发,无需刷新或手动重算
- 灵活“组合拳”:显示隐藏、分支跳转、自动赋值、动态校验、内容替换、选项互斥……所有高级功能一个都不少,且可随意组合
- 超强公式库:深度兼容 Formulajs,数学运算、文本处理、逻辑判断一网打尽
- 开发者友好:类自然语言书写,无需学习曲线,懂 Excel 就会写 DSL
- 无惧出错:规则出错自动容错跳过,不影响正常作答
比主流问卷平台更强大 许多传统问卷工具仅支持简单的显示/隐藏、跳转等基础逻辑,遇到多条件联动、批量赋值、公式校验等场景就力不从心。而我们的 DSL 支持复杂嵌套、批量处理、高级公式与全流程响应式执行,让你轻松应对所有“变态”逻辑需求。
示例
示例 | 说明 |
---|---|
if Q1A1 then show Q2 | 如果选择 Q1 选项 1,则显示 Q2 |
if Q1A1 then show Q2A1 | 如果选择 Q1 选项 1,则显示 Q2 选项 1 |
if AND(Q1A1, Q2A1) then show Q3 | 如果 Q1 选项 1 和 Q2 选项 1 都为真,则显示 Q3 |
if AND(OR(Q1A1, Q1A2), Q2A1) then show Q2,Q3 | 如果 Q1 选项 1 或选项 2 为真且 Q2 选项 1 为真,则显示 Q2 与 Q3 |
if Q1A1 then hide Q2 | 如果选择 Q1 选项 1,则隐藏 Q2 |
if Q1A1 then branch from Q1 to Q6 | 如果选择 Q1 选项 1,则从 Q1 跳转到 Q6 |
if Q1A1 then branch from Q1 to END | 如果选择 Q1 选项 1,则从 Q1 跳转到结束 |
if Q1A1 then required Q2 | 如果选择 Q1 选项 1,则 Q2 为必填 |
if Q1A1 then assignment Q2 with IFS(Q1A1, 2, Q1A2, 3) | 如果选择 Q1 选项 1,则设置 Q2 为 2;如果 Q1A2,则为 3(with 后面是公式表达式) |
assignment Q2 with SUM(Q1, 20) | 直接设置 Q2 为 Q1 与 20 之和(with 后面是公式表达式) |
replace Q2 with CONCATENATE("新", Q1) | 直接将 Q2 题目标题替换为"新"加 Q1 内容(with 后面是公式表达式) |
if Q1A1 then validate Q2 with IF(Q1A1>10, "不能大于 10", "") | 如果选择 Q1A1 且大于 10,Q2 校验不通过并提示"不能大于 10";返回空字符串则校验通过(with 后面是公式表达式) |
validate Q2 with IF(Q1A1>10, "不能大于 10", "") | Q2 校验,返回空字符串表示通过,返回其他内容作为提示(with 后面是公式表达式) |
mutex Q1A1 deselect Q1A6 | 配置题 1 选项 1 与选项 6 为互斥关系 |