第二章 DOT 语言¶
2.1 图(graph|digraph)的定义¶
1 | graph : [*strict*] (*graph* | *digraph*) [ID] '{' stmt_list '}'
|
DOT 语言内定义图,主要有三部分:图类型的声明、图的名称和图的具体内容。
[strict] (graph | digraph)
是对图类型的定义, graph
用于定义一般由点和线段组成的无向图,而 digraph
则用于定义有向图。 strict
是可选的,用于限制是否启用严格的语法。关于严格的语法,会在后续讲到,一般不需要声明 strict
。
[ID]
是对图名称的声明,一般由描述该图的名称的英文表示。
'{' stmt_list '}'
是图的具体内容,由一段被英文花括号包裹的语句列表组成。语句列表的定义如下:
2.2 语句(stmt)的定义¶
1 | stmt_list : [ stmt [';'] stmt_list ]
|
上述的定义是递归定义,简单的理解就是 stmt_list
是由多个 stmt
组成的,多个 stmt
之间使用英文分号分隔。
1 | stmt : node_stmt | edge_stmt | attr_stmt | ID '=' ID | subgraph
|
2.2.1 属性语句(attr_stmt)的定义¶
1 2 3 | attr_stmt : (*graph* | *node* | *edge*) attr_list
edge_stmt : (node_id | subgraph) edgeRHS [ attr_list ]
node_stmt : node_id [ attr_list ]
|