AST(抽象語法樹)的學(xué)習(xí)第二講——ast分析代碼步驟的拆解

直接上代碼

參考蔡老板星球文章
// 第一步
//文件模塊導(dǎo)入
const fs = require('fs');
//babel庫相關(guān),解析,轉(zhuǎn)換,構(gòu)建,生產(chǎn)
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";
// 命令行操作讀取文件數(shù)據(jù),暫時(shí)可以不加
// 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"});

// 第三步
//轉(zhuǎn)換為ast樹
let ast    = parser.parse(jscode);
console.log(ast)

// 第四步
const visitor =
    {
        //插件代碼
    }
//調(diào)用插件,處理源代碼
traverse(ast,visitor);

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

傳送門
AST(抽象語法樹)的學(xué)習(xí)第一講——認(rèn)識ast在線解析網(wǎng)站
http://www.itdecent.cn/p/6cccabe91228
AST(抽象語法樹)的學(xué)習(xí)第三講——ast分析常用節(jié)點(diǎn)及方法
http://www.itdecent.cn/p/7ccdfac7cf79
AST(抽象語法樹)的學(xué)習(xí)第四講——實(shí)戰(zhàn)ast
http://www.itdecent.cn/p/78405d38bb82

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容