code: function() {
        cleanRules(this._rules);
        var curIndex = 1,
          //当前下标
          splits = [],
          rules = this._rules,
          links = this._links,
          ruleNames = keys(rules).sort(function(a, b) {
            return rules[a].order >= rules[b].order;
          }),
          len = ruleNames.length;
  
        for (; len--;) {
          var i = ruleNames[len],
            rule = rules[i],
            retain = extractRefNum(rule.regexp) + 1; // 1就是那个all
          if (rule.filter && !filters[i]) {
            filters[i] = rule.filter;
          } //将filter转移到filters下
          links[i] = [curIndex, retain]; //分别是rule名，参数数量
          var regexp = extractRefIndex(rule.regexp, curIndex - 1);
          curIndex += retain;
          splits.push(regexp);
        }
        this.TRUNK = new RegExp("^(?:(" + splits.join(")|(") + "))");
        return this;
      }
docs: 组装