rule := target arrow source [options] target ::= (quoted_string | #id | rect | point) arrow ::= ("->"|"=>"|"=") source ::= (quoted_string | "this") rect ::= "rect" "(" number "," number "," number "," number ")" point ::= "point" "(" number "," number ")" options ::= [position] [margin] [scale] position ::= "position" ":" px ["," py] scale ::= "scale" ":" ("fit" | scaledim ["," scaledim]) margin ::= "margin" ":" number ["," number ["," number "," number]] px ::= number | perc | "center" | "c" | "left" | "l" | "right" | "r" | "inherit" | "i" py ::= number | perc | "center" | "c" | "top" | "t" | "bottom" | "b" scaledim ::= number | perc | width | height | "uniform" | "length" number perc ::= number "%" width ::= "width" "(" (#id | "this") ")" height ::= "height" "(" (#id | "this") ")" comment ::= "%" any number of chars NEWLINE