报错参考 / sequenceDiagram

sequenceDiagram 解析错误:某个代码块缺少 end

某个 alt、loop、opt、par、critical 或 break 代码块被打开了,却从未闭合,导致解析器在找到匹配的 end 之前就读完了整个图表。

Parse error on line 6:
...       A->>A: tick
---------------------^
Expecting 'SPACE', 'NEWLINE', 'INVALID', 'create', 'box', 'end', ... 'loop', 'rect', 'opt', 'alt', 'par', ... got '1'

为什么会这样

alt、loop、opt、par、critical 和 break 都会打开一个代码块,必须用各自的 end 闭合,就像 flowchart 里的 subgraph 一样。忘记加 end——通常发生在编辑时删除或调整了行的顺序——会让解析器一直等待永远不会到来的更多内容。

报错会出现在文件末尾(或者下一个同级代码块处),而不是真正打开了那个未闭合代码块的那一行,这使得快速浏览时很容易漏掉它。

如何修复

在代码块的最后一条消息之后补上缺失的 end。对于嵌套代码块(比如 loop 里嵌套了 alt),要数清楚打开和闭合的数量——每一个都需要自己的 end,从最内层开始闭合。

错误示例

解析失败

正在渲染预览...
sequenceDiagram
    participant A
    loop every 5s
        A->>A: tick

修复后

正常渲染

正在渲染预览...
sequenceDiagram
    participant A
    loop every 5s
        A->>A: tick
    end

更多报错