Graphviz and Friends

Slide 11/16 -- First Previous Next Last
What's a BNF again?

o It's a notation to describe a langauge
o We saw it on the DOT language page
o DOT's BNF looks like (but also has English extensions):
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 | _)