3333import static org .scijava .parsington .Operator .Associativity .LEFT ;
3434import static org .scijava .parsington .Operator .Associativity .RIGHT ;
3535
36- import java .lang .reflect .Field ;
37- import java .lang .reflect .Modifier ;
3836import java .util .ArrayList ;
37+ import java .util .Arrays ;
3938import java .util .List ;
4039
4140import org .scijava .parsington .Operator .Associativity ;
@@ -172,6 +171,67 @@ public final class Operators {
172171 public static final Operator UNSIGNED_RIGHT_SHIFT_ASSIGN = op (">>>=" , 2 ,
173172 RIGHT , 0 );
174173
174+ private static final List <Operator > operatorList = new ArrayList <>(
175+ Arrays .asList (
176+ DOT ,
177+ PARENS ,
178+ BRACKETS ,
179+ BRACES ,
180+ TRANSPOSE ,
181+ DOT_TRANSPOSE ,
182+ POW ,
183+ DOT_POW ,
184+ POST_INC ,
185+ POST_DEC ,
186+ PRE_INC ,
187+ PRE_DEC ,
188+ POS ,
189+ NEG ,
190+ COMPLEMENT ,
191+ NOT ,
192+ MUL ,
193+ DIV ,
194+ MOD ,
195+ RIGHT_DIV ,
196+ DOT_MUL ,
197+ DOT_DIV ,
198+ DOT_RIGHT_DIV ,
199+ ADD ,
200+ SUB ,
201+ LEFT_SHIFT ,
202+ RIGHT_SHIFT ,
203+ UNSIGNED_RIGHT_SHIFT ,
204+ LESS_THAN ,
205+ GREATER_THAN ,
206+ LESS_THAN_OR_EQUAL ,
207+ GREATER_THAN_OR_EQUAL ,
208+ INSTANCEOF ,
209+ EQUAL ,
210+ NOT_EQUAL ,
211+ BITWISE_AND ,
212+ BITWISE_OR ,
213+ LOGICAL_AND ,
214+ LOGICAL_OR ,
215+ QUESTION ,
216+ COLON ,
217+ ASSIGN ,
218+ POW_ASSIGN ,
219+ DOT_POW_ASSIGN ,
220+ MUL_ASSIGN ,
221+ DIV_ASSIGN ,
222+ MOD_ASSIGN ,
223+ RIGHT_DIV_ASSIGN ,
224+ DOT_DIV_ASSIGN ,
225+ DOT_RIGHT_DIV_ASSIGN ,
226+ ADD_ASSIGN ,
227+ SUB_ASSIGN ,
228+ AND_ASSIGN ,
229+ OR_ASSIGN ,
230+ LEFT_SHIFT_ASSIGN ,
231+ RIGHT_SHIFT_ASSIGN ,
232+ UNSIGNED_RIGHT_SHIFT_ASSIGN ));
233+
234+
175235 private Operators () {
176236 // NB: Prevent instantiation of utility class.
177237 }
@@ -183,19 +243,7 @@ private Operators() {
183243 * {@link Operators} class, in declaration order.
184244 */
185245 public static List <Operator > standardList () {
186- // Build the standard list from all available Operator constants.
187- final ArrayList <Operator > ops = new ArrayList <>();
188- for (final Field f : Operators .class .getFields ()) {
189- if (!isOperator (f )) continue ;
190- try {
191- ops .add ((Operator ) f .get (null ));
192- }
193- catch (final IllegalAccessException exc ) {
194- // This should never happen.
195- throw new IllegalStateException (exc );
196- }
197- }
198- return ops ;
246+ return new ArrayList <>(operatorList );
199247 }
200248
201249 // -- Helper methods --
@@ -212,10 +260,4 @@ private static Group group(final String leftSymbol,
212260 return new Group (leftSymbol , rightSymbol , precedence );
213261 }
214262
215- private static boolean isOperator (final Field f ) {
216- final int mods = f .getModifiers ();
217- return Modifier .isStatic (mods ) && Modifier .isFinal (mods ) &&
218- Operator .class .isAssignableFrom (f .getType ());
219- }
220-
221263}
0 commit comments