forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdot_ast.ml
executable file
·59 lines (48 loc) · 1.97 KB
/
dot_ast.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
(**************************************************************************)
(* *)
(* Ocamlgraph: a generic graph library for OCaml *)
(* Copyright (C) 2004-2010 *)
(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *)
(* *)
(* This software is free software; you can redistribute it and/or *)
(* modify it under the terms of the GNU Library General Public *)
(* License version 2.1, with the special exception on linking *)
(* described in file LICENSE. *)
(* *)
(* This software is distributed in the hope that it will be useful, *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *)
(* *)
(**************************************************************************)
(* $Id:$ *)
(** AST for DOT file format. *)
type id =
| Ident of string
| Number of string
| String of string
| Html of string
type attr = (id * id option) list
type compass_pt = N | Ne | E | Se | S | Sw | W | Nw
type port =
| PortId of id * compass_pt option
| PortC of compass_pt
type node_id = id * port option
type subgraph =
| SubgraphId of id
| SubgraphDef of id option * stmt list
and node =
| NodeId of node_id
| NodeSub of subgraph
and stmt =
| Node_stmt of node_id * attr list
| Edge_stmt of node * node list * attr list
| Attr_graph of attr list
| Attr_node of attr list
| Attr_edge of attr list
| Equal of id * id
| Subgraph of subgraph
type file =
{ strict : bool;
digraph : bool;
id : id option;
stmts : stmt list }