public static int Precedence(PasValueOperator op) { switch (op) { case PasValueOperator.CastAs: return 0; case PasValueOperator.InstanceOf: return 1; case PasValueOperator.AddressOf: return 2; case PasValueOperator.Positive: return 2; case PasValueOperator.Negative: return 3; case PasValueOperator.NotMask: return 4; case PasValueOperator.Not: return 5; case PasValueOperator.Multiply: return 6; case PasValueOperator.Divide: return 7; case PasValueOperator.IntDiv: return 8; case PasValueOperator.Remainder: return 9; case PasValueOperator.ShiftLeft: return 10; case PasValueOperator.ShiftRight: return 11; case PasValueOperator.AndMask: return 12; case PasValueOperator.OrMask: return 13; case PasValueOperator.XorMask: return 14; case PasValueOperator.Sum: return 15; case PasValueOperator.Concat: return 16; case PasValueOperator.Subtract: return 17; case PasValueOperator.Interval: return 18; case PasValueOperator.Union: return 19; case PasValueOperator.Intersection: return 20; case PasValueOperator.Diference: return 21; case PasValueOperator.Belongs: return 22; case PasValueOperator.Equal: return 23; case PasValueOperator.Inequal: return 24; case PasValueOperator.Less: return 25; case PasValueOperator.Greater: return 26; case PasValueOperator.NonLess: return 27; case PasValueOperator.NonGreater: return 28; case PasValueOperator.And: return 29; case PasValueOperator.Or: return 30; case PasValueOperator.Xor: return 31; default: return int.MaxValue; } }
CsValueOperator CsValueOperatorOf(PasValueOperator pasOperator) { switch (pasOperator) { case PasValueOperator.None: return CsValueOperator.None; case PasValueOperator.Positive: return CsValueOperator.Positive; case PasValueOperator.Negative: return CsValueOperator.Negative; case PasValueOperator.NotMask: return CsValueOperator.NotMask; case PasValueOperator.AndMask: return CsValueOperator.AndMask; case PasValueOperator.OrMask: return CsValueOperator.OrMask; case PasValueOperator.XorMask: return CsValueOperator.XorMask; case PasValueOperator.Concat: return CsValueOperator.Concat; case PasValueOperator.Sum: return CsValueOperator.Sum; case PasValueOperator.Subtract: return CsValueOperator.Subtract; case PasValueOperator.Multiply: return CsValueOperator.Multiply; case PasValueOperator.Divide: return CsValueOperator.Divide; case PasValueOperator.IntDiv: return CsValueOperator.IntDiv; case PasValueOperator.Remainder: return CsValueOperator.Remainder; case PasValueOperator.ShiftLeft: return CsValueOperator.ShiftLeft; case PasValueOperator.ShiftRight: return CsValueOperator.ShiftRight; case PasValueOperator.Equal: return CsValueOperator.Equal; case PasValueOperator.Inequal: return CsValueOperator.Inequal; case PasValueOperator.Less: return CsValueOperator.Less; case PasValueOperator.Greater: return CsValueOperator.Greater; case PasValueOperator.NonLess: return CsValueOperator.NonLess; case PasValueOperator.NonGreater: return CsValueOperator.NonGreater; case PasValueOperator.Not: return CsValueOperator.Not; case PasValueOperator.And: return CsValueOperator.And; case PasValueOperator.Or: return CsValueOperator.Or; case PasValueOperator.Xor: return CsValueOperator.Xor; case PasValueOperator.Interval: return CsValueOperator.Interval; case PasValueOperator.Union: return CsValueOperator.Union; case PasValueOperator.Intersection: return CsValueOperator.Intersection; case PasValueOperator.Diference: return CsValueOperator.Diference; case PasValueOperator.Belongs: return CsValueOperator.Belongs; case PasValueOperator.CastAs: return CsValueOperator.CastAs; case PasValueOperator.InstanceOf: return CsValueOperator.InstanceOf; case PasValueOperator.AddressOf: return CsValueOperator.AddressOf; } throw new Exception(string.Format("Tipo desconhecido: {0}", pasOperator.ToString())); }