网页爬虫之路 AST抽象语法树

AST抽象语法树入门

//AST在线解析 https://astexplorer.net/
//babel github https://github.com/jamiebuilds/babel-handbook/blob/master/translations/zh-Hans/plugin-handbook.md#toc-introduction
//babel库安装 npm install @babel/core

const parser = require("@babel/parser");  //将JS源码转换成语法树
const traverse = require("@babel/traverse").default;  //遍历AST语法树
const t = require("@babel/types");  //操作节点的 节点类型判断 生成新节点
const generator = require("@babel/generator").default;  //根据语法树生成JS源码
const fs = require('fs'); //读写本地文件

const jscode = fs.readFileSync("./ASTTestDemo.js", {
  encoding: "utf-8"
});
console.log(jscode);
let ast = parser.parse(jscode);
console.log(ast);
let {code} = generator(ast);

fs.writeFile('demo.js', code, (err)=>{});
console.log(code);

  

//输出
function add(a, b){
    return a + b;
}
Node {
  type: 'File',
  start: 0,
  end: 41,
  loc: SourceLocation {
    start: Position { line: 1, column: 0 },
    end: Position { line: 3, column: 1 }
  },
  errors: [],
  program: Node {
    type: 'Program',
    start: 0,
    end: 41,
    loc: SourceLocation { start: [Position], end: [Position] },
    sourceType: 'script',
    interpreter: null,
    body: [ [Node] ],
    directives: []
  },
  comments: []
}
function add(a, b) {
  return a + b;
}

  

 

posted @ 2020-08-15 14:11  沐风先生  阅读(457)  评论(0)    收藏  举报