parse method

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

Implementation

@override
Result<O1>? parse(State<I> state) {
  O1? l;
  final r1 = left.parse(state);
  if (r1 != null) {
    l = r1.value;
    while (true) {
      final pos = state.pos;
      final r2 = op.parse(state);
      if (r2 == null) {
        break;
      }

      final r3 = right.parse(state);
      if (r3 == null) {
        state.pos = pos;
        break;
      }

      final o = r2.value;
      final r = r3.value;
      // ignore: null_check_on_nullable_type_parameter
      l = f(l!, o, r);
    }
  }

  if (l != null) {
    return Result(l);
  }

  return null;
}