-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoperator.js
More file actions
31 lines (31 loc) · 1.23 KB
/
operator.js
File metadata and controls
31 lines (31 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var operator = [
{ name: '+', left: false, right: true, precedence: 0 },
{ name: '-', left: false, right: true, precedence: 0 },
{ name: '*', left: true, right: true, precedence: 1 },
{ name: '/', left: true, right: true, precedence: 1 },
{ name: '+', left: true, right: true, precedence: 2 },
{ name: '-', left: true, right: true, precedence: 2 },
{ name: '<=', left: true, right: true, precedence: 3 },
{ name: '=', left: true, right: true, precedence: 3 },
{ name: '>=', left: true, right: true, precedence: 3 },
{ name: '<', left: true, right: true, precedence: 3 },
{ name: '!=', left: true, right: true, precedence: 3 },
{ name: '>', left: true, right: true, precedence: 3 },
{ name: 'in', left: true, right: true, precedence: 3 },
{ name: '!', left: false, right: true, precedence: 4 },
{ name: '&', left: true, right: true, precedence: 5 },
{ name: '|', left: true, right: true, precedence: 6 },
{ name: '#', left: true, right: false, precedence: -1 }
];
var group = require('lodash.groupby')(operator, 'name');
Object.defineProperty(operator, 'resolve', {
value: function (name, left, right) {
return group[name].find(
operator =>
operator.left == left
&&
operator.right == right
);
}
});
module.exports = operator;