DSL 语法说明
一、基础规则与大小写说明
为了保证语法统一、易于理解和配置,DSL 语言有明确的大小写规范:
类型 | 书写要求 | 说明/举例 |
---|---|---|
关键字 | 小写 | 如:if 、then 、show 、hide 、branch 、assignment 、with 、validate 、replace 、mutex 、deselect |
变量(题号、选项号) | 全大写 | 如:Q1 、Q1A2 、Q2A1~Q2A4 、Q3S2 |
公式函数 | 全大写 | 如:SUM 、AVERAGE 、IF 、MIN 、MAX 、CONCATENATE 、AND 、OR 、NOT |
举例:
if Q1A1 then show Q2 # 正确:关键字小写、变量大写
IF(Q1A1, 1, 0) # 正确:公式函数大写
注意:
- 不要把题号、选项号、函数名写成小写,否则系统无法正确识别。
- 关键字一律小写,不能写成大写。
- 所有示例和输入区域均自动区分大小写。
二、注释写法
- 以
#
开头为整行注释,不参与执行。可用于模块说明、分组备注。 - 行尾也可用
#
补充简要说明。
示例:
# 以下为问卷显隐逻辑
if Q1A1 then show Q2 # 选择Q1选1显示Q2
三、各类逻辑类型详细说明
1. 显示/隐藏逻辑
作用:让题目/选项根据用户答案动态“显示”或“隐藏”。可实现“选了 XX 才显示下一题”等经典问卷联动。
语法
if 条件 then show 题目/选项
if 条件 then hide 题目/选项
应用场景
- 选了“有过就医经历”才显示详细就医题
- 选“其他”才显示输入框
常用示例
规则 | 说明 |
---|---|
if Q1A1 then show Q2 | 选了 Q1 第 1 项,显示 Q2 |
if Q1A2 then hide Q3 | 选了 Q1 第 2 项,隐藏 Q3 |
if AND(Q1A1, Q2A2) then show Q4 | Q1 选 1 且 Q2 选 2,显示 Q4 |
if OR(Q1A1, Q1A3) then show Q5 | Q1 选 1 或选 3,显示 Q5 |
if NOT(Q3A1) then hide Q4 | Q3 第 1 项未选时,隐藏 Q4 |
if Q1A1 then show Q2A1 | Q1 选 1,显示 Q2 的第 1 个选项 |
进阶写法:
- 同时控制多个题目:
if Q1A2 then hide Q2,Q3
- 控制多个选项:
if Q2A2 then show Q2A3,Q2A4
小贴士:
- 可组合
AND
、OR
、NOT
提升复杂度 - 支持选项级控制,灵活度高
2. 跳转逻辑
作用:让用户答完某题后,自动跳到指定题或直接结束问卷。常用于“甄别题”、“分流”、“中止”等场景。
语法
if 条件 then branch from 题目 to 题目/END
branch from 题目 to 题目/END
应用场景
- 不符合要求提前结束
- 某答案直接跳到相关模块
常用示例
规则 | 说明 |
---|---|
if Q1A3 then branch from Q1 to END | Q1 选 3 直接结束问卷(甄别) |
branch from Q2 to Q5 | 答完 Q2 后直接跳到 Q5 |
if AND(Q2A2, Q3A1) then branch from Q3 to Q6 | Q2 选 2 且 Q3 选 1,Q3 后跳 Q6 |
if Q4A1 then branch from Q4 to Q7 | Q4 选 1 后跳到 Q7,跳过 Q5、Q6 |
小贴士:
END
表示终止问卷branch from Qx to Qy
也可不带 if 条件,直接设置默认跳转
3. 赋值逻辑
作用:根据用户答案,自动给某题赋值(如自动打分、合成文本、动态展示)。
语法
if 条件 then assignment 题目 with 公式
assignment 题目 with 公式
应用场景
- 自动合计分数
- 生成专属文本(如自动填充称呼、动态推荐等)
常用示例
规则 | 说明 |
---|---|
assignment Q3 with SUM(Q1, Q2) | Q3 自动=Q1+Q2 之和 |
assignment Q5 with IF(Q4A1, 10, 0) | Q4 选 1 时 Q5=10,否则为 0 |
if Q1A1 then assignment Q6 with 99 | Q1 选 1 时,Q6 自动等于 99 |
assignment Q7 with CONCATENATE(Q1, "分") | Q7 内容为 Q1 答案加“分” |
assignment Q8 with MAX(Q2,Q3,Q4) | Q8 为 Q2-Q4 中的最大值 |
小贴士:
- 公式函数与 Excel 类似,支持数学、逻辑、文本等
- 赋值逻辑可简化用户操作,自动填充
4. 替换逻辑
作用:用公式结果动态替换题目标题或内容,适合做个性化展示、动态文案。
语法
replace 题目 with 公式
应用场景
- 动态展示姓名、城市、分数等内容
- 个性化表述,如“您的得分为 xx 分”
常用示例
规则 | 说明 |
---|---|
replace Q2 with CONCATENATE("您好,", Q1) | Q2 标题变为“您好,+Q1 内容” |
replace Q3 with IF(Q2>80,"优秀","一般") | Q3 标题根据 Q2 分数自动切换 |
replace Q4 with CONCATENATE(Q2,"-",Q3) | Q4 标题为 Q2 与 Q3 组合文本 |
5. 校验逻辑
作用:为题目设置自定义校验和错误提示,适合“数字范围”“字符要求”等复杂场景。
语法
if 条件 then validate 题目 with 公式
validate 题目 with 公式
应用场景
- 检查分数不能超过上限
- 检查文本必须包含某关键字
- 多条件联合校验
常用示例
规则 | 说明 |
---|---|
validate Q2 with IF(Q2>10,"不能大于 10","") | Q2>10 提示“不能大于 10”,否则通过 |
validate Q3 with IF(LEN(Q3)<6, "不能少于 6 个字", "") | Q3 字数小于 6 提示 |
if Q1A1 then validate Q2 with IF(Q2<0,"必须大于 0","") | Q1 选 1 时,Q2<0 提示 |
validate Q4 with IF(NOT(Q2A2), "必须选第二项", "") | Q2 未选第 2 项提示 |
小贴士:
- 校验失败时,提示内容由公式返回
- 返回空字符串表示校验通过
6. 互斥逻辑
作用:设置多选题中选项之间的互斥,自动控制不能同时选。
语法
mutex 选项 deselect 选项
应用场景
- “全选”与其他选项互斥
- “其他”与普通选项互斥
常用示例
规则 | 说明 |
---|---|
mutex Q4A1 deselect Q4A6 | 选 Q4A1 自动取消 Q4A6 |
mutex Q5A2 deselect Q5A3 | 选 Q5A2 自动取消 Q5A3 |
mutex Q6A1 deselect Q6A2,Q6A3 | Q6A1 与 Q6A2、Q6A3 互斥 |
mutex Q7A5 deselect Q7A1~Q7A4 | Q7A5 与 Q7A1-4 互斥 |
四、条件表达式和公式函数
1. 条件表达式
- 支持
AND
(且)、OR
(或)、NOT
(非)等 - 可嵌套组合,实现多条件判断
示例:
if AND(Q1A1, Q2A1) then show Q3 # Q1选1且Q2选1时显示Q3
if OR(Q1A2, Q1A3) then show Q4 # Q1选2或选3时显示Q4
if NOT(Q2A2) then hide Q5 # Q2未选第2项时隐藏Q5
2. 公式函数
- 大部分常用数学、逻辑、文本函数均可用,写法与 Excel 基本一致
- 如:
SUM
(求和)、IF
(条件)、MIN/MAX
(最小/最大)、LEN
(字数)、CONCATENATE
(拼接)、AVERAGE
(平均)等
常用公式示例:
SUM(Q1, Q2, 10) # Q1+Q2+10的和
IF(Q1A1, 1, 0) # Q1选1返回1,否则0
CONCATENATE(Q1, "分") # Q1加“分”
LEN(Q3) # Q3的答案字数
MAX(Q2, Q3, Q4) # Q2-Q4中的最大值
[更多函数和用法详见“公式大全”文档]
五、写作建议与常见问题
- 规则一行一条,便于排查和维护
- 注释充分,可分组说明业务逻辑
- 有错自动跳过,不影响作答
- 随时保存预览,效果立现
- 善用变量和公式,充分释放自动化能力
[此处插入“DSL 逻辑配置区/示例效果”截图]
如需更详细函数支持列表,请查阅DSL 公式大全;遇到疑问可联系客服协助。