Abstract class for AST representing regular expressions. Concrete subclasses correspond to --- binary trees (context, alternation and concatenation) unary trees (closure, finite repetition and anchored patterns) leaf nodes (chars, char classes, literal strings and the eof marker)