use right recursion for right associative operators
This commit is contained in:
parent
5f42326f34
commit
b51118c3fc
12
acorn.js
12
acorn.js
@ -2515,9 +2515,17 @@
|
||||
var op = tokType;
|
||||
next();
|
||||
var start = storeCurrentPos();
|
||||
node.right = parseExprOp(parseMaybeUnary(), start, prec, noIn);
|
||||
if(op.rightAssociative) {
|
||||
node.right = parseExprOp(parseMaybeUnary(), start, prec - 1, noIn);
|
||||
} else {
|
||||
node.right = parseExprOp(parseMaybeUnary(), start, prec, noIn);
|
||||
}
|
||||
finishNode(node, (op === _logicalOR || op === _logicalAND) ? "LogicalExpression" : "BinaryExpression");
|
||||
return parseExprOp(node, leftStart, minPrec, noIn);
|
||||
if(op.rightAssociative) {
|
||||
return node;
|
||||
} else {
|
||||
return parseExprOp(node, leftStart, minPrec, noIn);
|
||||
}
|
||||
}
|
||||
}
|
||||
return left;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user