aboutsummaryrefslogtreecommitdiff
path: root/lib/parse.js
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-01-24 21:48:51 +0000
committerGitHub <noreply@github.com>2021-01-25 05:48:51 +0800
commit9d23ba0a22fe3d1561b7860dc3aefadef72a4514 (patch)
tree65f50c3437c930692d6ecfb87afcdc357ab4b16a /lib/parse.js
parenta08d42555ac42ad1e9bf4b13f44ac46c5bb2dab4 (diff)
downloadtracifyjs-9d23ba0a22fe3d1561b7860dc3aefadef72a4514.tar.gz
tracifyjs-9d23ba0a22fe3d1561b7860dc3aefadef72a4514.zip
support exponentiation operator (#4593)
Diffstat (limited to 'lib/parse.js')
-rw-r--r--lib/parse.js6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/parse.js b/lib/parse.js
index 64307a95..38c56d8f 100644
--- a/lib/parse.js
+++ b/lib/parse.js
@@ -81,6 +81,7 @@ var OPERATORS = makePredicate([
"*",
"/",
"%",
+ "**",
">>",
"<<",
">>>",
@@ -630,7 +631,8 @@ var PRECEDENCE = function(a, ret) {
["<", ">", "<=", ">=", "in", "instanceof"],
[">>", "<<", ">>>"],
["+", "-"],
- ["*", "/", "%"]
+ ["*", "/", "%"],
+ ["**"],
], {});
var ATOMIC_START_TOKEN = makePredicate("atom bigint num regexp string");
@@ -1860,7 +1862,7 @@ function parse($TEXT, options) {
var prec = op != null ? PRECEDENCE[op] : null;
if (prec != null && prec > min_prec) {
next();
- var right = expr_op(maybe_await(), prec, no_in);
+ var right = expr_op(maybe_await(), op == "**" ? prec - 1 : prec, no_in);
return expr_op(new AST_Binary({
start : left.start,
left : left,