Demo/bin/Debug/front_end/script_formatter_worker/ESTreeWalker.js
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
// Copyright (c) 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @constructor
* @param {function(!ESTree.Node)} beforeVisit
* @param {function(!ESTree.Node)} afterVisit
*/
FormatterWorker.ESTreeWalker = function(beforeVisit, afterVisit)
{
this._beforeVisit = beforeVisit;
this._afterVisit = afterVisit;
}
FormatterWorker.ESTreeWalker.prototype = {
/**
* @param {!ESTree.Node} ast
*/
walk: function(ast)
{
this._innerWalk(ast, null);
},
/**
* @param {!ESTree.Node} node
* @param {?ESTree.Node} parent
*/
_innerWalk: function(node, parent)
{
if (!node)
return;
node.parent = parent;
this._beforeVisit.call(null, node);
var walkOrder = FormatterWorker.ESTreeWalker._walkOrder[node.type];
if (!walkOrder) {
console.error("Walk order not defined for " + node.type);
return;
}
if (node.type === "TemplateLiteral") {
var templateLiteral = /** @type {!ESTree.TemplateLiteralNode} */ (node);
var expressionsLength = templateLiteral.expressions.length;
for (var i = 0; i < expressionsLength; ++i) {
this._innerWalk(templateLiteral.quasis[i], templateLiteral);
this._innerWalk(templateLiteral.expressions[i], templateLiteral);
}
this._innerWalk(templateLiteral.quasis[expressionsLength], templateLiteral);
} else {
for (var i = 0; i < walkOrder.length; ++i) {
var entity = node[walkOrder[i]];
if (Array.isArray(entity))
this._walkArray(entity, node);
else
this._innerWalk(entity, node);
}
}
后面还有 66 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。