The Operator type exposes the following members.
Fields
Name  Description  

ASSOCIATIVE 
Associative operators x*(y*z) == (x*y)*z .


BINARY 
Binary operators, such as x+y, x>y


COMMUTATIVE 
Commutative operators x*y = y*x.


COMPOSITE 
composite operators, like ab which is a+(b)


EQUIVALENCE 
Equivalence relations = reflexive, transitive and symmetric.


flags 
Flags for type of operator


LEFT 
Left binding like +: 1+2+3 > (1+2)+3


NARY 
Trinary ops such as ?: and or higher like [x,y,z,w]


NO_ARGS 
No arguments to operator


NOT_IN_PARSER 
Non standard operators, like array access.
These will typically require the PrintRulesI interface to print
and require special parsing options.


PREFIX 
prefix operators x


REFLEXIVE 
Reflective relations x=x for all x.


RIGHT 
Right binding like =: 1=2=3 > 1=(2=3)


SELF_INVERSE 
self inverse operators like (x) !(!x)


SUFFIX 
postfix operators x%


SYMMETRIC 
Symmetric relation x=y implies y=x.


TERNARY 
three argument operators like java's cond?tval:fval


TRANSITIVE 
Transitive relations x=y and y=z implies x=z


UNARY 
Unary operators, such as x !x ~x


USE_BINDING_FOR_PRINT 
For non commutative operators printing can be determined by the left or right binding.
For example (ab)c is printed as abc (flag set).
But a/b/c could be ambiguous so (a/b)/c is printed with brackets (flag not set).
