<h1>AST Nodes</h1>
Grammar for regular expression supported by lemonex.
<verbatim>
  expr ::= and_expr
  and_expr ::= or_expr (expr)*
  or_expr ::= unary_expr ('|' expr)*
  unary_expr ::= inner_expr '*'
  unary_expr ::= inner_expr '+'
  unary_expr ::= inner_expr '?'
  unary_expr ::= inner_expr
  inner_expr ::= '(' expr ')'
  inner_expr ::= '[' range_expr+ ']'
  inner_expr ::= primary_expr
  range_expr ::= CHAR - CHAR
  range_expr ::= primary_expr
  primary_expr ::= DOT
  primary_expr ::= BSLASH CHAR
  primary_expr ::= CHAR
</verbatim>