graph : [ strict ] (graph | digraph) [ ID ] '{' stmt_list '}' stmt_list : [ stmt [ ';' ] [ stmt_list ] ] stmt : node_stmt | edge_stmt | attr_stmt | ID '=' ID | subgraph attr_stmt : (graph | node | edge) attr_list attr_list : '[' [ a_list ] ']' [ attr_list ] a_list : ID [ '=' ID ] [ ',' ] [ a_list ] edge_stmt : (node_id | subgraph) edgeRHS [ attr_list ] edgeRHS : edgeop (node_id | subgraph) [ edgeRHS ] node_stmt : node_id [ attr_list ] node_id : ID [ port ] port : ':' ID [ ':' compass_pt ] | ':' compass_pt subgraph : [ subgraph [ ID ] ] '{' stmt_list '}' compass_pt : (n | ne | e | se | s | sw | w | nw | c | _) ID : [-]?(.[0-9]+ | [0-9]+(.[0-9]*)? | [a-zA-Z\200-\377] //extension drop_graph : drop ID constraint_list : '(' ID ',' ID ')' [constraint_list] add_vertices : add vertices ID '{' node_stmt '}' remove_vertices : remove vertices ID '{' a_list '}' add_edges : add edges ID '{' edge_stmt '}' remove_edges : remove edges ID '{' edge_stmt '}' set_vertex_constraints : set vertices constraint ID '{' a_list '}' set_order_constraints : set order constraint ID '{' constraint_list '}'