docs: function splitAll(source, cb, rules) {
    var done = false
      , stash = '';
    do {
      splitNext( source, function(event, response) {
          response.stash = stash;
          if (event == 'end') done = true;
          else {
            
            source = response.rhs;
            stash += response.lhs + response.token;
  
            response.consume = function(length) {
              stash += source.substr( 0, length );
              source = source.substr( length, source.length );
            };
  
            response.resetStash = function() {
              stash = '';
            };
            
            response.break = function() {
              done = true; 
            };
          }
          cb( event, response );
        }, 
        rules );
    } 
    while(!done);
  }