code: function generateModuleAst(moduleInfo) {
      var dependenciesExpr;
      var actualDependencies = moduleInfo.actualDependencies;
      var dependencies = (moduleInfo.dependencies || []).slice(0);
  
      if (actualDependencies instanceof Array) {
          dependenciesExpr = {
              type: SYNTAX.ArrayExpression,
              elements: []
          };
  
          var diffDependencies = subtract(
              actualDependencies,
              intersect(dependencies, actualDependencies)
          );
          dependencies.concat(diffDependencies).forEach(function (dependency) {
              dependenciesExpr.elements.push({
                  type: SYNTAX.Literal,
                  value: dependency,
                  raw: '\'' + dependency + '\''
              });
          });
      }
  
      var defineArgs = [moduleInfo.factoryAst];
      if (dependenciesExpr) {
          defineArgs.unshift(dependenciesExpr);
      }
      var id = moduleInfo.id;
      if (id) {
          defineArgs.unshift({
              type: SYNTAX.Literal,
              value: moduleInfo.id,
              raw: '\'' + moduleInfo.id + '\''
          });
      }
  
      return {
          type: SYNTAX.CallExpression,
          callee: {
              type: SYNTAX.Identifier,
              name: LITERAL_DEFINE
          },
          arguments: defineArgs
      };
  }
docs: 根据模块信息生成AST
  
  @param {Object} moduleInfo 模块信息，通常是analyseModule的返回结果
  @return {Object}