fluke.js
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);
}
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);
}
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 ) ; }
process all tokens in tokens
process all tokens in tokens