铁路图

来自GSXAB的知识库
(重定向自语法图
铁路图
术语名称 铁路图
英语名称 railroad diagram
别名 语法图, syntax diagram

铁路图(railroad diagram)或语法图(syntax diagram),指一种为上下文无关文法设计的图形化表示方式。 计算机领域中,铁路图常常作为一个直观化的补充,在 BNF 或其变体进行严谨描述同时使用,也用在教学中。

由于铁路图更多地出现在直观表示方式中,相对来说使用场合不会要求太严谨,很多基本图例的实际绘制方式因人而异。

图例

解释

铁路图是一个图表,将每个生成式绘制成一幅图,其结构是一张从左向右的有向图

  • 图的结点,代表起止点和文法符号。
    • 起止点使用一个小的空心或实心的圆圈,或象征列车轨道端点的单、双竖线,或者像箭的尾部和头部的形状。
    • 文法符号使用矩形的框和圆形、圆角矩形的框标记,内部写上对应的符号,一般使用圆形框表示只有一个字符的终结符,圆角矩形框表示多个字符的终结符,方形框表示非终结符。
      • 但是这几种框也有人反过来使用,根据绘制者偏好可能有所区别。
  • 图的有向边,代表连接的顺序。绘制直线或带有线的箭头。在图中可以按照线的方向进行,最后路径上的结点连在一起就是文法中允许的一个生成序列。
  • 图中结点的入边一定从图形左侧先平滑地汇入一条线,出边一定从图形右侧画一条线再平滑地分开。根据平滑汇入或流出的方向,或者根据图上的箭头,可以区分边的方向。

基本图例

起止点、连线、终结符与非终结符。[1]

plantuml_ebnf_basic.svg

文法符号间的连接。

plantuml_ebnf_concat.svg

文法符号间的选择。

plantuml_ebnf_alter.svg

文法中的重复,使用 BNF 时一般写成递归形式。 但铁路图与 BNF 不同,递归规则会失去直观性,表达文法符号的重复时使用特殊的基本图例。

plantuml_ebnf_one_or_more.svg

总体来说,所有的线条都是以从左到右方式排列。 通常主体向右的线条是选择,向下向右分叉,而需要回到左侧的线条对应重复,向上向左分叉,并在左侧汇入。

常见图形模式

以下内容是上述的组合,接近 EBNF 的语法。

plantuml_ebnf_multiplier.svg

  1. 以下图片使用 PlantUML 绘制。示例来自 [1]