start method
Returns the starting production of this definition.
Implementation
@override
Parser<Node> start() {
final builder = ExpressionBuilder<Node>();
builder
..primitive(ref0(dot))
..primitive(ref0(startAnchor))
..primitive(ref0(endAnchor))
..primitive(ref0(charClass))
..primitive(ref0(escape))
..primitive(ref0(other));
builder.group().wrapper(char('('), char(')'), (_, value, _) => value);
builder.group()
..prefix(char('!'), (_, exp) => ComplementNode(exp))
..postfix(char('*'), (exp, _) => QuantificationNode(exp, 0))
..postfix(char('+'), (exp, _) => QuantificationNode(exp, 1))
..postfix(char('?'), (exp, _) => QuantificationNode(exp, 0, 1))
..postfix(
ref0(range),
(exp, range) => QuantificationNode(exp, range.min, range.max),
);
builder.group()
..left(epsilon(), (left, _, right) => ConcatenationNode(left, right))
..optional(const EmptyNode());
builder.group()
..left(char('|'), (left, _, right) => AlternationNode(left, right))
..left(char('&'), (left, _, right) => IntersectionNode(left, right));
return resolve(builder.build()).end();
}