AST(抽象语法树)的学习第二讲——ast分析代码步骤的拆解

直接上代码

参考蔡老板星球文章
// 第一步
//文件模块导入
const fs = require('fs');
//babel库相关,解析,转换,构建,生产
const parser    = require("@babel/parser");
const traverse  = require("@babel/traverse").default;
const types     = require("@babel/types");
const generator = require("@babel/generator").default;

// 第二步
//读取文件
let encode_file = "./encode.js", decode_file = "./decode_result.js";
// 命令行操作读取文件数据,暂时可以不加
// if (process.argv.length > 2)
// {
//     encode_file = process.argv[2];
// }
// if (process.argv.length > 3)
// {
//     decode_file = process.argv[3];
// }
let jscode = fs.readFileSync(encode_file, {encoding: "utf-8"});

// 第三步
//转换为ast树
let ast    = parser.parse(jscode);
console.log(ast)

// 第四步
const visitor =
    {
        //插件代码
    }
//调用插件,处理源代码
traverse(ast,visitor);

// 第五步
//生成新的js code,并保存到文件中输出
let {code} = generator(ast);
fs.writeFile('decode.js', code, (err)=>{});

传送门
AST(抽象语法树)的学习第一讲——认识ast在线解析网站
https://www.jianshu.com/p/6cccabe91228
AST(抽象语法树)的学习第三讲——ast分析常用节点及方法
https://www.jianshu.com/p/7ccdfac7cf79
AST(抽象语法树)的学习第四讲——实战ast
https://www.jianshu.com/p/78405d38bb82

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容