add precedence to generated node generation
This commit is contained in:
parent
d0a33ab933
commit
4cb90cb1e0
@ -8,6 +8,8 @@ function Node(node, parent) {
|
|||||||
this.node = node;
|
this.node = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
Node.whitespace = {
|
Node.whitespace = {
|
||||||
FunctionExpression: 1,
|
FunctionExpression: 1,
|
||||||
FunctionStatement: 1,
|
FunctionStatement: 1,
|
||||||
@ -27,6 +29,29 @@ _.each(Node.whitespace, function (amounts, type) {
|
|||||||
Node.whitespace[type] = amounts;
|
Node.whitespace[type] = amounts;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
Node.PRECEDENCE = {};
|
||||||
|
|
||||||
|
_.each([
|
||||||
|
["||"],
|
||||||
|
["&&"],
|
||||||
|
["|"],
|
||||||
|
["^"],
|
||||||
|
["&"],
|
||||||
|
["==", "===", "!=", "!=="],
|
||||||
|
["<", ">", "<=", ">=", "in", "instanceof"],
|
||||||
|
[">>", "<<", ">>>"],
|
||||||
|
["+", "-"],
|
||||||
|
["*", "/", "%"]
|
||||||
|
], function (tier, i) {
|
||||||
|
_.each(tier, function (op) {
|
||||||
|
Node.PRECEDENCE[op] = i;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
Node.prototype.needsWhitespace = function (type) {
|
Node.prototype.needsWhitespace = function (type) {
|
||||||
var node = this.node;
|
var node = this.node;
|
||||||
if (!node) return 0;
|
if (!node) return 0;
|
||||||
@ -109,10 +134,10 @@ Node.prototype.needsParans = function () {
|
|||||||
|
|
||||||
if (t.isBinary(parent)) {
|
if (t.isBinary(parent)) {
|
||||||
var parentOp = parent.operator;
|
var parentOp = parent.operator;
|
||||||
var parentPos = t.PRECEDENCE[parentOp];
|
var parentPos = Node.PRECEDENCE[parentOp];
|
||||||
|
|
||||||
var nodeOp = node.operator;
|
var nodeOp = node.operator;
|
||||||
var nodePos = t.PRECEDENCE[nodeOp];
|
var nodePos = Node.PRECEDENCE[nodeOp];
|
||||||
|
|
||||||
if (parentPos > nodePos) {
|
if (parentPos > nodePos) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user