docs: function(src, asyncFilters, extensions, name, lexerTags) {
                  // ...todo step in new Compiler()
                  var c = new Compiler();
  
                  // Run the extension preprocessors against the source.
                  // ... 此处的extension就是通过env.addExtension方法添加的扩展
                  // ... todo 待分析 extension的preprocess
                  if (extensions && extensions.length) {
                      for (var i = 0; i < extensions.length; i++) {
                          if ('preprocess' in extensions[i]) {
                              src = extensions[i].preprocess(src, name);
                          }
                      }
                  }
  
                  // ... 此处将源代码分解为三部来写 方便分析
                  // ... step1: parser.parse 语法分析生成语法树
                  // ... note 词法提取包含在语法分析内部，两种行为在内部是并行进行的。
                  var __ast = parser.parse(src, extensions, lexerTags);
                  console.log('%c parser.parse ', logStyle);
                  console.log(__ast);
  
                  // ... step2: transformer.transform
                  var __ast2 = transformer.transform(__ast, asyncFilters, name);
                  // console.log('%c transformer.transform ', logStyle);
                  // console.log(__ast2);
  
                  // ... step3: compiler.compile
                  c.compile(__ast2);
  
                  // ... 源代码开始
                  // c.compile(transformer.transform(parser.parse(src, extensions, lexerTags),
                  //     asyncFilters,
                  //     name));
                  // ... 源代码结束
  
                  return c.getCode();
              }