whole_func_string: function it(type, value) {
              var i, t;
              if (type === '(color)' || type === '(range)') {
                  t = {type: type};
              } else if (type === '(punctuator)' ||
                      (type === '(identifier)' && is_own(syntax, value))) {
                  t = syntax[value] || syntax['(error)'];
              } else {
                  t = syntax[type];
              }
              t = Object.create(t);
              if (type === '(string)' || type === '(range)') {
                  if (jx.test(value)) {
                      warningAt("Script URL.", line, from);
                  }
              }
              if (type === '(identifier)') {
                  t.identifier = true;
                  if (value === '__iterator__' || value === '__proto__') {
                      errorAt("Reserved name '{a}'.",
                          line, from, value);
                  } else if (option.nomen &&
                          (value.charAt(0) === '_' ||
                           value.charAt(value.length - 1) === '_')) {
                      warningAt("Unexpected {a} in '{b}'.", line, from,
                          "dangling '_'", 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;
          }
func_code_string: function it(type, value) {
              var i, t;
              if (type === '(color)' || type === '(range)') {
                  t = {type: type};
              } else if (type === '(punctuator)' ||
                      (type === '(identifier)' && is_own(syntax, value))) {
                  t = syntax[value] || syntax['(error)'];
              } else {
                  t = syntax[type];
              }
              t = Object.create(t);
              if (type === '(string)' || type === '(range)') {
                  if (jx.test(value)) {
                      warningAt("Script URL.", line, from);
                  }
              }
              if (type === '(identifier)') {
                  t.identifier = true;
                  if (value === '__iterator__' || value === '__proto__') {
                      errorAt("Reserved name '{a}'.",
                          line, from, value);
                  } else if (option.nomen &&
                          (value.charAt(0) === '_' ||
                           value.charAt(value.length - 1) === '_')) {
                      warningAt("Unexpected {a} in '{b}'.", line, from,
                          "dangling '_'", 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;
          }
func_documentation_string: Produce a token object.  The token inherits from a syntax symbol.