grrr ::= (nil) | grrr block block ::= rule-block | data-block | decl-block rule-block ::= "rule section:" rules data-block ::= "data section:" data decl-block ::= "declarations:" decls rules ::= (nil) | rules rule rule ::= pattern "=>" pattern ";" pattern ::= node-chain | pattern "," node-chain node-chain ::= precond nodes postcond nodes ::= node | nodes "-" node precond ::= (nil) | node "!" postcond ::= (nil) | "!" node node ::= color | ":" name | color ":" name color ::= cdata | color "*" cdata name ::= cdata data ::= (nil) | data datum datum ::= pattern ";"