code: function(input) {
        // 清理input数据、因为parsed数据最终会被缓存，
        // 我们要尽量让相同的选择器只对应一份parsed数据
        input = clean(input);
        // 先检查缓存中是否有数据
        if (parsed = this.cache.get(input)) return parsed;
        // 如果没有: 初始化参数
        var parsed = this.parsed = [
          [null]
        ];
        var remain = this.input = input;
        var TRUNK = this.TRUNK;
        var prevRemain;
          // 将remain进行this._process这里每匹配一个字符串都会进行一次reduce
        while (prevRemain != (remain = remain.replace(TRUNK, this._process.bind(this)))) {
          prevRemain = remain;
        }
        // 如果没有被解析完 证明选择器字符串有不能被解析的部分
        if (remain !== '') this.error(remain);
        // 返回数据并推入cache
        return this.cache.set(input, parsed);
      }
docs: ### 解析输入字符串input、返回action定义的data数据