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 公式
应用场景
- 检查分数不能超过上限
- 检查文本必须包含某关键字
- 多条件联合校验