digraph Number_Parse {
	size="8,8";
	ratio=fill;
	VALID [style=filled color=grey];
	INVALID [style=filled color=grey];
	START -> INT [label="digit"];
	START -> S1 [label="'+' or '-'"];
	START -> FLOAT [label="dot"];
	START -> INVALID [label="Other" fontcolor=red];
	INT -> FLOAT [label="dot" tailport=e headport=nw];
	INT -> INT [label="digit" tailport=w ];
	INT -> INVALID [label="Other" fontcolor=red];
	INT -> VALID [label="separator"];
	S1 -> INT [label="digit"];
	S1 -> FLOAT [label="dot"];
	S1 -> INVALID [label="Other" fontcolor=red];
	subgraph exponent {
		S2 -> EXPONENT [label="'+' or '-'"];
		S2 -> INVALID [label="Other" fontcolor=red];
		EXPONENT -> SCIENTIFIC [label="digit"];
		EXPONENT -> INVALID [label="Other" fontcolor=red];
		SCIENTIFIC -> SCIENTIFIC [label="digit"];
		SCIENTIFIC -> INVALID [label="Other" fontcolor=red];
		SCIENTIFIC -> VALID [label="separator"];	
	}
	{ rank = same; "INT"; "FLOAT"; "S2"; } 
	FLOAT -> S2 [label="'E' or 'e'"];
	FLOAT -> FLOAT [label="digit" tailport=w ];
	FLOAT -> INVALID [label="Other" fontcolor=red];
	FLOAT -> VALID [label="separator"];
}