AST & Compiler 简记
JS 编译器通过 AST 解析,转换,再生成新代码等过程进行编译操作,笔记简单记一下使用 babel 的 ast 解析器 (babylon) 来动态生成新代码。
AST
Abstract Syntax Tree
简要说明:https://github.com/barretlee/babel-plugin-ast/blob/master/docs/babel-loader-ast.pdf
Demo
const babylon = require("babylon");
const traverse = require("babel-traverse").default;
const generate = require('babel-generator').default;
const code = `
const abc = 1;
let hello = 'world';
`;
const ast = babylon.parse(code);
traverse(ast, {
enter(path) {
if (path.node.type === 'Identifier') {
path.node.name = path.node.name.split('').reverse().join('');
}
}
});
console.log(generate(ast).code);
// output:
// const cba = 1;
// let olleh = 'world';
Comments
Leave a comment