2929import com .igormaznitsa .prologparser .terms .TermType ;
3030import com .igormaznitsa .prologparser .utils .AssertUtils ;
3131
32+ import java .util .ArrayList ;
3233import java .util .Arrays ;
34+ import java .util .Collections ;
35+ import java .util .List ;
3336import java .util .Locale ;
3437import java .util .stream .Collectors ;
3538import java .util .stream .Stream ;
@@ -73,7 +76,7 @@ public final class Op extends SpecServiceCompound {
7376 /**
7477 * Set of operators for ISO Prolog standard.
7578 */
76- public static final Op [] ISO = {
79+ public static final List < Op > ISO = Collections . unmodifiableList ( Arrays . asList (
7780 ISO_CLAUSES ,
7881 ISO_DIRECTIVES ,
7982 ISO_OR ,
@@ -92,22 +95,22 @@ public final class Op extends SpecServiceCompound {
9295 ISO_UNARY_MINUS ,
9396 ISO_BITWISE_NEGATION ,
9497 make (100 , OpAssoc .XFX , "@" )
95- } ;
98+ )) ;
9699
97100 /**
98101 * Set of operators is specific for GNU Prolog use.
99102 */
100- public static final Op [] GNU_SPECIFIC = {
103+ public static final List < Op > GNU_SPECIFIC = Collections . unmodifiableList ( Arrays . asList (
101104 GNU_STAR_THEN ,
102105 GNU_DOUBLE_DOT ,
103106 GNU_DIV_RDIV ,
104- GNU_UNARY_PLUS ,
105- } ;
107+ GNU_UNARY_PLUS
108+ )) ;
106109
107110 /**
108111 * Set of operators is specific for SWI Prolog use
109112 */
110- public static final Op [] SWI_SPECIFIC = {
113+ public static final List < Op > SWI_SPECIFIC = Collections . unmodifiableList ( Arrays . asList (
111114 make (1150 , OpAssoc .FX , "dynamic" , "discontiguous" , "initialization" , "meta_predicate" , "module_transparent" , "multifile" , "public" , "thread_local" , "thread_initialization" , "volatile" ),
112115 GNU_STAR_THEN ,
113116 make (990 , OpAssoc .FY , ":=" ),
@@ -118,35 +121,35 @@ public final class Op extends SpecServiceCompound {
118121 GNU_DIV_RDIV ,
119122 GNU_UNARY_PLUS ,
120123 make (1 , OpAssoc .FX , "$" )
121- } ;
124+ )) ;
122125
123126 /**
124127 * Set of operators for SWI Prolog.
125128 */
126- public static final Op [] SWI = Op .join (ISO , SWI_SPECIFIC );
129+ public static final List < Op > SWI = Collections . unmodifiableList ( Op .join (ISO , SWI_SPECIFIC ) );
127130
128131 /**
129132 * Set of Finite Domain operators for GNU Prolog.
130133 */
131- public static final Op [] GNU_FD = {
134+ public static final List < Op > GNU_FD = Collections . unmodifiableList ( Arrays . asList (
132135 make (750 , XFY , "#<=>" , "#\\ <=>" ),
133136 make (740 , XFY , "#==>" , "#\\ ==>" ),
134137 make (730 , XFY , "##" ),
135138 make (730 , YFX , "#\\ /" , "#\\ \\ /" ),
136139 make (720 , YFX , "#/\\ " , "#\\ /\\ " ),
137140 make (710 , FY , "#\\ " ),
138141 make (700 , XFX , "#=" , "#\\ =" , "#<" , "#=<" , "#>" , "#>=" , "#=#" , "#\\ =#" , "#<#" , "#=<#" , "#>#" , "#>=#" )
139- } ;
142+ )) ;
140143
141144 /**
142145 * Set of operators for GNU Prolog.
143146 */
144- public static final Op [] GNU = Op .join (ISO , GNU_SPECIFIC );
147+ public static final List < Op > GNU = Collections . unmodifiableList ( Op .join (ISO , GNU_SPECIFIC ) );
145148
146149 /**
147150 * Set of Constraint Logic Programming operators for SWI Prolog.
148151 */
149- public static final Op [] SWI_CPL = {
152+ public static final List < Op > SWI_CPL = Collections . unmodifiableList ( Arrays . asList (
150153 make (300 , FY , "~" ),
151154 make (500 , YFX , "#" ),
152155 make (760 , YFX , "#<==>" ),
@@ -157,8 +160,8 @@ public final class Op extends SpecServiceCompound {
157160 make (720 , YFX , "#/\\ " ),
158161 make (710 , FY , "#\\ " ),
159162 make (700 , XFX , "#>" , "#<" , "#>=" , "#=<" , "#=" , "#\\ =" , "in" , "ins" ),
160- make (450 , XFX , ".." ),
161- } ;
163+ make (450 , XFX , ".." )
164+ )) ;
162165
163166 public static final Op VIRTUAL_OPERATOR_BLOCK = makeSystem (-1 , OpAssoc .FX , "()" );
164167 public static final Op METAOPERATOR_COMMA = makeSystem (1000 , OpAssoc .XFY , "," );
@@ -250,8 +253,12 @@ static Op makeSystem(final int precedence, final OpAssoc type, final String... n
250253 : new Op (precedence , type , ".system." , assertOpValidOpName (names ));
251254 }
252255
253- public static Op [] join (Op []... args ) {
254- return of (args ).flatMap (Stream ::of ).toArray (Op []::new );
256+ public static List <Op > join (final List <Op >... args ) {
257+ final List <Op > result = new ArrayList <>();
258+ for (final List <Op > l : args ) {
259+ result .addAll (l );
260+ }
261+ return result ;
255262 }
256263
257264 public static Op [] add (Op [] args , Op ... ops ) {
0 commit comments