parse method

  1. @override
Result<(O1, O2, O3)>? parse(
  1. State<I> state
)
override

Parses the input and returns a result wrapped in Result if successful, null otherwise.

Implementation

@override
Result<(O1, O2, O3)>? parse(State<I> state) {
  final pos = state.pos;
  final r1 = p1.parse(state);
  if (r1 != null) {
    final r2 = p2.parse(state);
    if (r2 != null) {
      final r3 = p3.parse(state);
      if (r3 != null) {
        return Result((
          r1.value,
          r2.value,
          r3.value,
        ));
      }
    }
  }

  state.pos = pos;
  return null;
}