code: function it(type, value) {
              var i, t;
              if (type === '(punctuator)' ||
                      (type === '(identifier)' && syntax.hasOwnProperty(value))) {
                  t = syntax[value];
  
  // Mozilla bug workaround.
  
                  if (!t.id) {
                      t = syntax[type];
                  }
              } else {
                  t = syntax[type];
              }
              t = object(t);
              if (type === '(string)') {
                  if (jx.test(value)) {
                      warningAt("Script URL.", line, from);
                  }
              } else if (type === '(identifier)') {
                  if (option.nomen && value.charAt(0) === '_') {
                      warningAt("Unexpected '_' in '{a}'.", line, from, value);
                  } else if (option.adsafe &&
                          (adsafe[value] === true || value.slice(-2) === '__')) {
                      warning("ADsafe restricted word '{a}'.",
                              {line: line, from: character}, value);
                  }
              }
              t.value = value;
              t.line = line;
              t.character = character;
              t.from = from;
              i = t.id;
              if (i !== '(endline)') {
                  prereg = i &&
                          (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) ||
                          i === 'return');
              }
              return t;
          }
docs: Produce a token object.  The token inherits from a syntax symbol.