AST学习-删除空行和空语句

删除空行和空语句

目标

示例代码:

1
2
3
4
5
6
7
var a = 123;


;


var b = 456;

转换为

1
2
var a = 123;
var b = 456;

分析

空语句的节点type是 EmptyStatement ,空行不会被解析,所以使用generator方法处理

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 将 JS 源码转换成语法树的函数
const parser = require("@babel/parser")
// 遍历 AST 的函数
const traverse = require("@babel/traverse").default
// 操作节点的函数
const t = require("@babel/types")
// 将语法书转换成源代码的函数
const generator = require("@babel/generator").default

var jscode = 'var a = 123;\n' +
'\n' +
'\n' +
'\n' +
';\n' +
'\n' +
'\n' +
'\n' +
'var b = 456;'

// 删除空语句
const vistor = {
EmptyStatement(path){
path.remove();
}
}

const ast = parser.parse(jscode);
traverse(ast, vistor)

// 删除空行
options = {
readlines: true
}

let {code} = generator(ast, opts=options);
console.log(code)

查看结果


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!