build method

  1. @useResult
Parser<T> build()

Builds the expression parser.

Implementation

@useResult
Parser<T> build() {
  final primitives = <Parser<T>>[
    ..._primitives,
    ..._groups.expand((group) => group.primitives),
  ];
  assert(primitives.isNotEmpty, 'At least one primitive parser expected');
  final parser = _groups.fold<Parser<T>>(
    buildChoice(primitives),
    (parser, group) => group.build(parser),
  );
  _loopback.set(parser);
  return resolve(parser);
}