1 2 3 4 5 6 7 8
MATCH => [ EXPR ] WORD; MATCH => [ EXPR ] ; EXPR => TERM ('|' TERM)* TERM => FACTOR* FACTOR => ATOM ('*' | '+' | '?')? ATOM => CHAR | '(' EXPR ')' | DASH DASH => [ (RANGE | CHAR)* ] RANGE => a-z, 0-9...