UNPKG

shift-interpreter

Version:

Shift-interpreter is an experimental JavaScript meta-interpreter useful for reverse engineering and analysis. One notable difference from other projects is that shift-interpreter retains state over an entire script but can be fed expressions and statement

53 lines 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compoundAssignmentOperatorMap = exports.unaryOperatorMap = exports.binaryOperatorMap = void 0; exports.binaryOperatorMap = new Map([ ['+', (l, r) => l + r()], ['-', (l, r) => l - r()], ['/', (l, r) => l / r()], ['*', (l, r) => l * r()], ['**', (l, r) => l ** r()], ['==', (l, r) => l == r()], ['!=', (l, r) => l != r()], ['===', (l, r) => l === r()], ['!==', (l, r) => l !== r()], ['<', (l, r) => l < r()], ['<=', (l, r) => l <= r()], ['>', (l, r) => l > r()], ['>=', (l, r) => l >= r()], ['in', (l, r) => l in r()], ['instanceof', (l, r) => l instanceof r()], ['<<', (l, r) => l << r()], ['>>', (l, r) => l >> r()], ['>>>', (l, r) => l >>> r()], ['%', (l, r) => l % r()], [',', (l, r) => r()], ['||', (l, r) => l || r()], ['&&', (l, r) => l && r()], ['|', (l, r) => l | r()], ['&', (l, r) => l & r()], ['^', (l, r) => l ^ r()], ]); exports.unaryOperatorMap = new Map([ ['+', (oper) => +oper], ['-', (oper) => -oper], ['!', (oper) => !oper], ['~', (oper) => ~oper], ['typeof', (oper) => typeof oper], ['void', (oper) => void oper], ]); exports.compoundAssignmentOperatorMap = new Map([ ['+=', (l, r) => l + r], ['-=', (l, r) => l - r], ['/=', (l, r) => l / r], ['*=', (l, r) => l * r], ['**=', (l, r) => l ** r], ['<<=', (l, r) => l << r], ['>>=', (l, r) => l >> r], ['>>>=', (l, r) => l >>> r], ['%=', (l, r) => l % r], ['|=', (l, r) => l | r], ['&=', (l, r) => l & r], ['^=', (l, r) => l ^ r], ]); //# sourceMappingURL=operators.js.map