-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoperator.go
60 lines (50 loc) · 1.48 KB
/
operator.go
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package gal
type Operator string
func (Operator) kind() entryKind {
return operatorEntryKind
}
func (o Operator) String() string {
return string(o)
}
const (
invalidOperator Operator = "invalid"
Plus Operator = "+"
Minus Operator = "-"
Multiply Operator = "*"
Divide Operator = "/"
Modulus Operator = "%"
Power Operator = "**"
LShift Operator = "<<"
RShift Operator = ">>"
LessThan Operator = "<"
LessThanOrEqual Operator = "<="
EqualTo Operator = "=="
NotEqualTo Operator = "!="
GreaterThan Operator = ">"
GreaterThanOrEqual Operator = ">="
And Operator = "And" // TODO: case sentive for now
And2 Operator = "&&"
Or Operator = "Or" // TODO: case sentive for now
Or2 Operator = "||"
)
func powerOperators(o Operator) bool {
return o == Power
}
func multiplicativeOperators(o Operator) bool {
return o == Multiply || o == Divide || o == Modulus
}
func additiveOperators(o Operator) bool {
return o == Plus || o == Minus
}
func bitwiseShiftOperators(o Operator) bool {
return o == LShift || o == RShift
}
func comparativeOperators(o Operator) bool {
return o == GreaterThan || o == GreaterThanOrEqual ||
o == LessThan || o == LessThanOrEqual ||
o == EqualTo || o == NotEqualTo
}
func logicalOperators(o Operator) bool {
return o == And || o == And2 ||
o == Or || o == Or2
}