From f91f8da978b7ce2ad663d9ebce16be7691ef53cb Mon Sep 17 00:00:00 2001 From: yuanchuan Date: Fri, 29 Oct 2021 17:18:49 +0800 Subject: [PATCH] Add support for left/right shift operator --- src/calc.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/calc.js b/src/calc.js index d3f3e2a..f0cb160 100644 --- a/src/calc.js +++ b/src/calc.js @@ -24,7 +24,8 @@ const operator = { '*': 6, '/': 6, '÷': 6, '%': 6, '&': 5, '|': 5, '+': 4, '-': 4, - '<': 3, '>': 3, + '<': 3, '<<': 3, + '>': 3, '>>': 3, '=': 3, '==': 3, '≤': 3, '<=': 3, '≥': 3, '>=': 3, @@ -110,7 +111,7 @@ function get_tokens(input) { if (c == '=' && last_token && /^[!<>=]$/.test(last_token.value)) { last_token.value += c; } - else if (/^[|&]$/.test(c) && last_token && last_token.value == c) { + else if (/^[|&<>]$/.test(c) && last_token && last_token.value == c) { last_token.value += c; } else if (c == '-' && expr[i - 1] == 'e') { @@ -255,6 +256,8 @@ function compute(op, a, b) { case '≠': case '!=': return a != b; case '∧': case '&&': return a && b; case '∨': case '||': return a || b; + case '<<': return a << b; + case '>>': return a >> b; } }