跳到主要内容

DSL 语法说明

一、基础规则与大小写说明

为了保证语法统一、易于理解和配置,DSL 语言有明确的大小写规范:

类型书写要求说明/举例
关键字小写如:ifthenshowhidebranchassignmentwithvalidatereplacemutexdeselect
变量(题号、选项号)全大写如:Q1Q1A2Q2A1~Q2A4Q3S2
公式函数全大写如:SUMAVERAGEIFMINMAXCONCATENATEANDORNOT

举例

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 Q4Q1 选 1 且 Q2 选 2,显示 Q4
if OR(Q1A1, Q1A3) then show Q5Q1 选 1 或选 3,显示 Q5
if NOT(Q3A1) then hide Q4Q3 第 1 项未选时,隐藏 Q4
if Q1A1 then show Q2A1Q1 选 1,显示 Q2 的第 1 个选项

进阶写法:

  • 同时控制多个题目:if Q1A2 then hide Q2,Q3
  • 控制多个选项:if Q2A2 then show Q2A3,Q2A4

小贴士:

  • 可组合ANDORNOT提升复杂度
  • 支持选项级控制,灵活度高

2. 跳转逻辑

作用:让用户答完某题后,自动跳到指定题或直接结束问卷。常用于“甄别题”、“分流”、“中止”等场景。

语法

if 条件 then branch from 题目 to 题目/END
branch from 题目 to 题目/END

应用场景

  • 不符合要求提前结束
  • 某答案直接跳到相关模块

常用示例

规则说明
if Q1A3 then branch from Q1 to ENDQ1 选 3 直接结束问卷(甄别)
branch from Q2 to Q5答完 Q2 后直接跳到 Q5
if AND(Q2A2, Q3A1) then branch from Q3 to Q6Q2 选 2 且 Q3 选 1,Q3 后跳 Q6
if Q4A1 then branch from Q4 to Q7Q4 选 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 99Q1 选 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,Q6A3Q6A1 与 Q6A2、Q6A3 互斥
mutex Q7A5 deselect Q7A1~Q7A4Q7A5 与 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 公式大全;遇到疑问可联系客服协助。