let vertex_attributes v =
    let n = V.label v in
    let label = match !n with
      | Vstart _ -> "Start" | Vexit _ -> "Exit"
      | VfctIn _ -> "FctIn" | VfctOut _ -> "FctOut"
      | VblkOut s -> Format.sprintf "BLOCKout <%d>" s.sid
      | _ -> 
        let s = VL.stmt n in 
          (match s.skind with
       | Instr _ -> Format.sprintf "INSTR <%d>\n%s" s.sid (pretty_raw_stmt s)
       | Return _ -> Format.sprintf "RETURN <%d>" s.sid
       | Goto _ -> Format.sprintf "%s <%d>" (pretty_raw_stmt s) s.sid
       | Break _ -> Format.sprintf "BREAK <%d>" s.sid
       | Continue _ -> Format.sprintf "CONTINUE <%d>" s.sid
       | If(e, _, _, _) -> Pretty_utils.sfprintf
           "IF <%d>\n%a" s.sid !Ast_printer.d_exp e
       | Switch _ ->  Format.sprintf "SWITCH <%d>" s.sid
       | Loop _ ->  Format.sprintf "WHILE(1) <%d>" s.sid
       | Block _ ->  Format.sprintf "BLOCKin <%d>" s.sid
       | TryExcept _ ->  Format.sprintf "TRY EXCEPT <%d>" s.sid
       | TryFinally _ ->  Format.sprintf "TRY FINALLY <%d>" s.sid
       | UnspecifiedSequence _ ->  Format.sprintf "UnspecifiedSeq <%d>" s.sid)
    in
    let attr = match !n with
      | Vstart _ | Vexit _ -> [`Color 0x0000FF; `Shape `Doublecircle]
      | VfctIn _ | VfctOut _ -> [`Color 0x0000FF; `Shape `Box]
      | VblkIn _ | VblkOut _ -> [`Shape `Box]
      | Vloop _ -> [`Color 0xFF0000; `Style `Filled]
      | Vtest _ -> [`Color 0x00FF00; `Style `Filled`Shape `Diamond]
      | Vstmt _ -> []
    in (`Label (String.escaped label))::attr