code: function compileFormat (value) {
    var c = compiledCache[value];
    if (c) {
      return c;
    }
  
    var m;
    var lastIndex = 0;
    var v = [];
    var o = null;
  
    var REG = value.indexOf('{') === -1 ? PARAM : MUSH;
  
    while(m = REG.exec(value)){
      var index = m.index;
  
      if (lastIndex !== index) {
        v.push(value.slice(lastIndex, index));
      }
      if (parameters.hasOwnProperty(m[1])) {
        if (m[2]) {
          v.push({p: m[1], o: +m[2]});
        } else {
          v.push({p: m[1]});
        }
      } else {
        v.push(m[0]);
      }
      lastIndex = index + m[0].length;
    }
    if (lastIndex !== value.length) {
      var suf = value.slice(lastIndex);
      var sufIndex = suf.indexOf('>>');
      if (sufIndex === -1) {
        v.push(suf);
      } else {
        if (sufIndex !== 0) {
          v.push(suf.slice(0, sufIndex));
        }
        o = getOptions(suf.slice(sufIndex));
      }
    }
    REG.lastIndex = 0;
  
    c = o ? {v, o} : {v};
    compiledCache[value] = c;
    return c;
  }
docs: フォーマットからパラメーター文字列を検出して分解し返す
  
  YYYY年MM月DD日(W>1)>>漢数字
  => {v: [{p:'YYYY'}, '年', {p:'MM'}, '月', {p:'DD'}, '日(', {p:'W', o:1}, ')'], o: {kansuji: true}}
  
  @param  {String} value
  @return {Array}  compiled