code: function(value) {
        var s = '';
        var i = 1;
        var len = value.length - 1;
        var c, c2, hex, n, index, length;
  
        while (i < len) {
          c = value.charAt(i++);
  
          if (c === '\\') {
            if (i < len) {
              c2 = value.charCodeAt(i);
              if (isLineTerminator(c2)) {
                i++;
                if (c2 === 0x0D && i < len && value.charCodeAt(i) === 0x0A) {
                  i++;
                }
                continue;
              }
            }
  
            c = value.charAt(i++);
            switch (c) {
              case 'b':
                c = '\b';
                break;
              case 't':
                c = '\t';
                break;
              case 'r':
                c = '\r';
                break;
              case 'n':
                c = '\n';
                break;
              case 'v':
                c = '\x0B';
                break;
              case 'f':
                c = '\f';
                break;
              case 'u':
              case 'x':
                if (c === 'u' && i < len && value.charAt(i) === '{') {
                  i++;
                  index = value.indexOf('}', i);
                  if (!~index) {
                    this.unexpected();
                  }
                  hex = value.substring(i, index);
                  i = index + 1;
                } else {
                  length = c === 'u' ? 4 : 2;
                  hex = value.substr(i, length);
                  i += length;
                }
                c = fromCodePoint(parseInt(hex, 16));
                break;
              default:
                if (isOctalDigit(c)) {
                  n = c;
                  do {
                    c = value.charAt(i);
                    if (!isOctalDigit(c)) {
                      break;
                    }
                    n += c;
                  } while (i++ < len && n.length < 3);
  
                  if (n.length > 0 && n.charAt(0) === '0') {
                    n = n.substring(1);
                  }
                  c = fromCharCode(parseInt(n, 8));
                }
            }
          }
          s += c;
        }
  
        return s;
      }
docs: ECMA-262 11.8.4 String Literals