Below is the file 'dot_types.mli' from this revision. You can also download the file.

type graph = {
    strict : bool ;
    kind   : [`GRAPH | `DIGRAPH] ;
    id     : string option ;
    stmt   : statement list ;
  }
and statement = [
  | `NODE of string * port option * attr list
  | `SUBGRAPH of string option * statement list
  | `ATTR_GRAPH of attr list
  | `ATTR_NODE of attr list
  | `ATTR_EDGE of attr list
  | `ID_EQUAL of string * string
  | `EDGE of (subgraph_or_node * edegeop * attr list)
  ]
and subgraph_or_node = [
    `SUBGRAPH of string option * statement list
  | `NODEID of (string * port option) ]
and port = ([`NO_LOCATION | `LOCATION of [`ONE_ID of string
                                         | `TWO_ID of string * string ]] *
            [`NO_ANGLE | `ANGLE of string])
and attr = string * string
and edegeop = ([`DIRECTED | `UNDIRECTED] * subgraph_or_node) list