private static function BinaryOperations()
{
if (self::$BinaryOperations === null) {
self::$BinaryOperations = ['BitwiseAnd' => function ($L, $R) {
return $L & $R;
}, 'BitwiseOr' => function ($L, $R) {
return $L | $R;
}, 'BitwiseXor' => function ($L, $R) {
return $L ^ $R;
}, 'ShiftLeft' => function ($L, $R) {
return $L << $R;
}, 'ShiftRight' => function ($L, $R) {
return $L >> $R;
}, 'BooleanAnd' => function ($L, $R) {
return $L && $R;
}, 'BooleanOr' => function ($L, $R) {
return $L || $R;
}, 'LogicalAnd' => function ($L, $R) {
return $L and $R;
}, 'LogicalOr' => function ($L, $R) {
return $L or $R;
}, 'Plus' => function ($L, $R) {
return $L + $R;
}, 'Minus' => function ($L, $R) {
return $L - $R;
}, 'Mul' => function ($L, $R) {
return $L * $R;
}, 'Div' => function ($L, $R) {
return $L / $R;
}, 'Mod' => function ($L, $R) {
return $L % $R;
}, 'Concat' => function ($L, $R) {
return $L . $R;
}, 'Instanceof' => function ($L, $R) {
return $L instanceof $R;
}, 'Equal' => function ($L, $R) {
return $L == $R;
}, 'Identical' => function ($L, $R) {
return $L === $R;
}, 'NotEqual' => function ($L, $R) {
return $L != $R;
}, 'NotIdentical' => function ($L, $R) {
return $L !== $R;
}, 'Smaller' => function ($L, $R) {
return $L < $R;
}, 'SmallerOrEqual' => function ($L, $R) {
return $L <= $R;
}, 'Greater' => function ($L, $R) {
return $L > $R;
}, 'GreaterOrEqual' => function ($L, $R) {
return $L >= $R;
}];
}
return self::$BinaryOperations;
}