网页爬虫之路 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;
}
谢谢

浙公网安备 33010602011771号