-
-
Notifications
You must be signed in to change notification settings - Fork 346
/
OperatorHelper.java
104 lines (98 loc) · 2.1 KB
/
OperatorHelper.java
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/**
* SPDX-License-Identifier: (MIT OR CECILL-C)
*
* Copyright (C) 2006-2019 INRIA and contributors
*
* Spoon is available either under the terms of the MIT License (see LICENSE-MIT.txt) of the Cecill-C License (see LICENSE-CECILL-C.txt). You as the user are entitled to choose the terms under which to adopt Spoon.
*/
package spoon.reflect.visitor;
import spoon.SpoonException;
import spoon.reflect.code.BinaryOperatorKind;
import spoon.reflect.code.UnaryOperatorKind;
/**
* Computes source code representation of the operator
*/
class OperatorHelper {
private OperatorHelper() {
}
public static boolean isPrefixOperator(UnaryOperatorKind o) {
return isSufixOperator(o) == false;
}
public static boolean isSufixOperator(UnaryOperatorKind o) {
return o.name().startsWith("POST");
}
/**
* @return java source code representation of a pre or post unary operator.
*/
public static String getOperatorText(UnaryOperatorKind o) {
switch (o) {
case POS:
return "+";
case NEG:
return "-";
case NOT:
return "!";
case COMPL:
return "~";
case PREINC:
return "++";
case PREDEC:
return "--";
case POSTINC:
return "++";
case POSTDEC:
return "--";
default:
throw new SpoonException("Unsupported operator " + o.name());
}
}
/**
* @return java source code representation of a binary operator.
*/
public static String getOperatorText(BinaryOperatorKind o) {
switch (o) {
case OR:
return "||";
case AND:
return "&&";
case BITOR:
return "|";
case BITXOR:
return "^";
case BITAND:
return "&";
case EQ:
return "==";
case NE:
return "!=";
case LT:
return "<";
case GT:
return ">";
case LE:
return "<=";
case GE:
return ">=";
case SL:
return "<<";
case SR:
return ">>";
case USR:
return ">>>";
case PLUS:
return "+";
case MINUS:
return "-";
case MUL:
return "*";
case DIV:
return "/";
case MOD:
return "%";
case INSTANCEOF:
return "instanceof";
default:
throw new SpoonException("Unsupported operator " + o.name());
}
}
}