ast
Node {
type: 'File',
start: 0,
end: 1181,
loc: SourceLocation {
start: Position { line: 1, column: 0 },
end: Position { line: 55, column: 22 },
filename: undefined,
identifierName: undefined
},
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
errors: [],
program: Node {
type: 'Program',
start: 0,
end: 1181,
loc: SourceLocation {
start: [Position],
end: [Position],
filename: undefined,
identifierName: undefined
},
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
sourceType: 'module',
interpreter: null,
body: [
[Node], [Node],
[Node], [Node],
[Node], [Node],
[Node], [Node],
[Node], [Node],
[Node], [Node]
],
directives: []
},
comments: [
{
type: 'CommentLine',
value: ' 给你一把"螺丝刀"——recast',
start: 130,
end: 150,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' 你的"机器"——一段代码',
start: 186,
end: 201,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' 我们使用了很奇怪格式的代码,想测试是否能维持代码结构',
start: 202,
end: 231,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' 用螺丝刀解析机器',
start: 342,
end: 353,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' ast可以处理很巨大的代码文件',
start: 403,
end: 421,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' 但我们现在只需要代码块的第一个body,即add函数',
start: 422,
end: 451,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' console.log(add)',
start: 486,
end: 505,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' 引入变量声明,变量符号,函数声明三种“模具”',
start: 507,
end: 532,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' 将准备好的组件置入模具,并组装回原来的ast对象。',
start: 626,
end: 654,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' Anonymize the function expression.',
start: 767,
end: 804,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' console.log(tempTokens)',
start: 966,
end: 992,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' ast.tokens =tempTokens',
start: 993,
end: 1018,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: " console.log('ast->',ast)",
start: 1019,
end: 1046,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: '将AST对象重新转回可以阅读的代码',
start: 1099,
end: 1118,
loc: [SourceLocation]
},
{
type: 'CommentLine',
value: ' console.log(output)',
start: 1159,
end: 1181,
loc: [SourceLocation]
}
]
}
path
path-> <ref *1> NodePath {
contexts: [
TraversalContext {
queue: [Array],
priorityQueue: [],
parentPath: [NodePath],
scope: [Scope],
state: undefined,
opts: [Object]
}
],
state: undefined,
opts: {
CallExpression: { enter: [Array] },
_exploded: true,
_verified: true
},
_traverseFlags: 0,
skipKeys: null,
parentPath: NodePath {
contexts: [ [TraversalContext] ],
state: undefined,
opts: { CallExpression: [Object], _exploded: true, _verified: true },
_traverseFlags: 0,
skipKeys: null,
parentPath: NodePath {
contexts: [Array],
state: undefined,
opts: [Object],
_traverseFlags: 0,
skipKeys: null,
parentPath: [NodePath],
container: [Node],
listKey: undefined,
key: 'alternate',
node: [Node],
type: 'BlockStatement',
parent: [Node],
hub: undefined,
data: null,
context: [TraversalContext],
scope: [Scope]
},
container: [ [Node] ],
listKey: 'body',
key: 0,
node: Node {
type: 'ExpressionStatement',
start: 90,
end: 109,
loc: [SourceLocation],
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
expression: [Node]
},
type: 'ExpressionStatement',
parent: Node {
type: 'BlockStatement',
start: 82,
end: 115,
loc: [SourceLocation],
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
body: [Array],
directives: []
},
hub: undefined,
data: null,
context: TraversalContext {
queue: [Array],
priorityQueue: [],
parentPath: [NodePath],
scope: [Scope],
state: undefined,
opts: [Object]
},
scope: Scope {
uid: 2,
path: [NodePath],
block: [Node],
labels: Map(0) {},
inited: true,
bindings: [Object: null prototype] {},
references: [Object: null prototype] {},
globals: [Object: null prototype] {},
uids: [Object: null prototype] {},
data: [Object: null prototype] {},
crawling: undefined
}
},
container: Node {
type: 'ExpressionStatement',
start: 90,
end: 109,
loc: SourceLocation {
start: [Position],
end: [Position],
filename: undefined,
identifierName: undefined
},
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
expression: Node {
type: 'CallExpression',
start: 90,
end: 109,
loc: [SourceLocation],
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
callee: [Node],
arguments: [Array]
}
},
listKey: undefined,
key: 'expression',
node: Node {
type: 'CallExpression',
start: 90,
end: 109,
loc: SourceLocation {
start: [Position],
end: [Position],
filename: undefined,
identifierName: undefined
},
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
callee: Node {
type: 'MemberExpression',
start: 90,
end: 100,
loc: [SourceLocation],
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
object: [Node],
computed: false,
property: [Node]
},
arguments: [ [Node], [Node] ]
},
type: 'CallExpression',
parent: Node {
type: 'ExpressionStatement',
start: 90,
end: 109,
loc: SourceLocation {
start: [Position],
end: [Position],
filename: undefined,
identifierName: undefined
},
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
expression: Node {
type: 'CallExpression',
start: 90,
end: 109,
loc: [SourceLocation],
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
callee: [Node],
arguments: [Array]
}
},
hub: undefined,
data: null,
context: TraversalContext {
queue: [ [Circular *1] ],
priorityQueue: [],
parentPath: NodePath {
contexts: [Array],
state: undefined,
opts: [Object],
_traverseFlags: 0,
skipKeys: null,
parentPath: [NodePath],
container: [Array],
listKey: 'body',
key: 0,
node: [Node],
type: 'ExpressionStatement',
parent: [Node],
hub: undefined,
data: null,
context: [TraversalContext],
scope: [Scope]
},
scope: Scope {
uid: 2,
path: [NodePath],
block: [Node],
labels: Map(0) {},
inited: true,
bindings: [Object: null prototype] {},
references: [Object: null prototype] {},
globals: [Object: null prototype] {},
uids: [Object: null prototype] {},
data: [Object: null prototype] {},
crawling: undefined
},
state: undefined,
opts: { CallExpression: [Object], _exploded: true, _verified: true }
},
scope: <ref *2> Scope {
uid: 2,
path: NodePath {
contexts: [Array],
state: undefined,
opts: [Object],
_traverseFlags: 0,
skipKeys: null,
parentPath: [NodePath],
container: [Node],
listKey: undefined,
key: 'alternate',
node: [Node],
type: 'BlockStatement',
parent: [Node],
hub: undefined,
data: null,
context: [TraversalContext],
scope: [Circular *2]
},
block: Node {
type: 'BlockStatement',
start: 82,
end: 115,
loc: [SourceLocation],
range: undefined,
leadingComments: undefined,
trailingComments: undefined,
innerComments: undefined,
extra: undefined,
body: [Array],
directives: []
},
labels: Map(0) {},
inited: true,
bindings: [Object: null prototype] {},
references: [Object: null prototype] {},
globals: [Object: null prototype] {},
uids: [Object: null prototype] {},
data: [Object: null prototype] {},
crawling: undefined
}
}