nl_tokens: bind acts like a predicate but it also binds a variable to a name and puts it in the binding context . The parameters are : n : the binding name p : the actual predicate associated with this binding v : the value that this function is executed on .
pl_tokens: function <mask> ( n , p , v ) { var m = p ( v ) ; if ( m . result ) { // Throw an exception if the same name is bound multiple times.  if ( bindingContext . hasOwnProperty ( n ) ) { throw "Name '" + n + "' is already used in another binding." ; } bindingContext [ n ] = m . obj ? m . obj [ m . param ] : m . param ; } /**
       * When the rest of an array is matched, the binding value has to
       * be changed after executing bind. Thats because at bind time the
       * rest of the array is not known. Therefore the name of the last
       * binding is stored and can be retrieved in the continuing function.
       */ m . this_binding = n ; return m ; }