callCC<S> method

  1. @useResult
Parser<S> callCC<S>(
  1. ContinuationHandler<R, S> handler
)

Returns a parser that when activated captures a continuation function and passes it together with the current context into the handler.

Handlers are not required to call the continuation, but can completely ignore it, call it multiple times, and/or store it away for later use. Similarly handlers can modify the current context and/or modify the returned result.

The following example shows a simple wrapper. Messages are printed before and after the digit() parser is activated:

final parser = digit().callCC((continuation, context) {
  print('Parser will be activated, the context is $context.');
  final result = continuation(context);
  print('Parser was activated, the result is $result.');
  return result;
});

Implementation

@useResult
Parser<S> callCC<S>(ContinuationHandler<R, S> handler) =>
    ContinuationParser<R, S>(this, handler);