whole_func_string: function (ch, keywordIsName) {
          var token = this.token;
          var id = ch;
  
          while ((ch = this.getValidIdentifierChar(false)) !== null) {
              id += ch;
          }
  
          token.type = IDENTIFIER;
          token.value = id;
  
          if (keywordIsName)
              return;
  
          var kw;
  
          if (this.parser.mozillaMode) {
              kw = definitions.mozillaKeywords[id];
              if (kw) {
                  token.type = kw;
                  return;
              }
          }
  
          if (this.parser.x.strictMode) {
              kw = definitions.strictKeywords[id];
              if (kw) {
                  token.type = kw;
                  return;
              }
          }
  
          kw = definitions.keywords[id];
          if (kw)
              token.type = kw;
      }
func_code_string: function (ch, keywordIsName) {
          var token = this.token;
          var id = ch;
  
          while ((ch = this.getValidIdentifierChar(false)) !== null) {
              id += ch;
          }
  
          token.type = IDENTIFIER;
          token.value = id;
  
          if (keywordIsName)
              return;
  
          var kw;
  
          if (this.parser.mozillaMode) {
              kw = definitions.mozillaKeywords[id];
              if (kw) {
                  token.type = kw;
                  return;
              }
          }
  
          if (this.parser.x.strictMode) {
              kw = definitions.strictKeywords[id];
              if (kw) {
                  token.type = kw;
                  return;
              }
          }
  
          kw = definitions.keywords[id];
          if (kw)
              token.type = kw;
      }
func_documentation_string: FIXME: Unicode escape sequences