public override bool Evaluate(IModel m) { IComparable a = LeftHandSide.GetResult(m); IComparable b = RightHandSide.GetResult(m); return(a.CompareTo(b) <= 0); }
public override bool Equals(object obj) { if (obj == null) { return(false); } var production = obj as Production; if (production == null) { return(false); } if (!LeftHandSide.Equals(production.LeftHandSide)) { return(false); } var rightHandSideCount = RightHandSide.Count; if (rightHandSideCount != production.RightHandSide.Count) { return(false); } for (int i = 0; i < rightHandSideCount; i++) { if (!RightHandSide[i].Equals(production.RightHandSide[i])) { return(false); } } return(true); }
public Equation Clone() { Expression lhs = LeftHandSide.Clone(); Expression rhs = RightHandSide.Clone(); return(new Equation(lhs, ComparisonOperator, rhs)); }
/// <summary> /// Returns whether the value(s) contained by the given other LRItem equals this object. /// </summary> /// <param name="other"></param> /// <returns></returns> public bool Equals(LRItem <T> other) { if (LookaheadElement != null && other.LookaheadElement != null) { return(LeftHandSide.Equals(other.LeftHandSide) && DotIndex == other.DotIndex && ProductionElements.SequenceEqual(other.ProductionElements) && LookaheadElement.Equals(other.LookaheadElement)); } return(LeftHandSide.Equals(other.LeftHandSide) && DotIndex == other.DotIndex && ProductionElements.SequenceEqual(other.ProductionElements)); }
public Sequent Clone() { var clone = (Sequent)MemberwiseClone(); clone.LeftHandSide = LeftHandSide.Clone(); clone.RightHandSide = RightHandSide.Clone(); return(clone); }
private int ComputeHashCode() { var hash = HashCode.ComputeIncrementalHash(LeftHandSide.GetHashCode(), 0, true); for (var s = 0; s < RightHandSide.Count; s++) { var symbol = RightHandSide[s]; hash = HashCode.ComputeIncrementalHash(symbol.GetHashCode(), hash); } return(hash); }
public override string ToString() { var stringBuilder = new StringBuilder(); stringBuilder.Append(LeftHandSide.ToString()); stringBuilder.Append(" ← "); stringBuilder.Append(RightHandSide.ToString()); if (Justification != null) { stringBuilder.Append(" :: "); stringBuilder.Append(Justification); } return(stringBuilder.ToString()); }
/// <summary> /// Sets up the command /// </summary> public override void Setup() { ILGenerator Generator = Utilities.Reflection.Emit.BaseClasses.MethodBase.CurrentMethod.Generator; if (LeftHandSide is FieldBuilder || LeftHandSide is IPropertyBuilder) { Generator.Emit(OpCodes.Ldarg_0); } LeftHandSide.Load(Generator); if (RightHandSide is FieldBuilder || RightHandSide is IPropertyBuilder) { Generator.Emit(OpCodes.Ldarg_0); } RightHandSide.Load(Generator); if (ComparisonType == Comparison.Equal) { Generator.Emit(OpCodes.Ceq); Generator.Emit(OpCodes.Ldc_I4_0); } Generator.Emit(ComparisonOpCodes[ComparisonType], EndIfLabel); }
/// <summary> /// Sets up the command /// </summary> public override void Setup() { ILGenerator generator = MethodBase.CurrentMethod.Generator; if (LeftHandSide is FieldBuilder || LeftHandSide is IPropertyBuilder) { generator.Emit(OpCodes.Ldarg_0); } LeftHandSide.Load(generator); if (RightHandSide is FieldBuilder || RightHandSide is IPropertyBuilder) { generator.Emit(OpCodes.Ldarg_0); } RightHandSide.Load(generator); if (ComparisonType == Comparison.Equal) { generator.Emit(OpCodes.Ceq); generator.Emit(OpCodes.Ldc_I4_0); } generator.Emit(ComparisonOpCodes[ComparisonType], EndIfLabel); }
public override void Setup() { ILGenerator Generator = Utilities.Reflection.Emit.BaseClasses.MethodBase.CurrentMethod.Generator; if (RightHandSide.DataType.IsValueType && !LeftHandSide.DataType.IsValueType) { RightHandSide = Utilities.Reflection.Emit.BaseClasses.MethodBase.CurrentMethod.Box(RightHandSide); } else if (!RightHandSide.DataType.IsValueType && LeftHandSide.DataType.IsValueType) { RightHandSide = Utilities.Reflection.Emit.BaseClasses.MethodBase.CurrentMethod.UnBox(RightHandSide, LeftHandSide.DataType); } else if (!RightHandSide.DataType.IsValueType && !LeftHandSide.DataType.IsValueType && RightHandSide.DataType != LeftHandSide.DataType) { RightHandSide = Utilities.Reflection.Emit.BaseClasses.MethodBase.CurrentMethod.Cast(RightHandSide, LeftHandSide.DataType); } if (LeftHandSide is FieldBuilder || LeftHandSide is IPropertyBuilder) { Generator.Emit(OpCodes.Ldarg_0); } if (RightHandSide is FieldBuilder || RightHandSide is IPropertyBuilder) { Generator.Emit(OpCodes.Ldarg_0); } RightHandSide.Load(Generator); if (RightHandSide.DataType != LeftHandSide.DataType) { if (ConversionOpCodes.ContainsKey(LeftHandSide.DataType)) { Generator.Emit(ConversionOpCodes[LeftHandSide.DataType]); } } LeftHandSide.Save(Generator); }
public override void Setup() { ILGenerator Generator = Utilities.Reflection.Emit.BaseClasses.MethodBase.CurrentMethod.Generator; if (LeftHandSide is FieldBuilder || LeftHandSide is IPropertyBuilder) { Generator.Emit(OpCodes.Ldarg_0); } LeftHandSide.Load(Generator); if (RightHandSide is FieldBuilder || RightHandSide is IPropertyBuilder) { Generator.Emit(OpCodes.Ldarg_0); } RightHandSide.Load(Generator); if (LeftHandSide.DataType != RightHandSide.DataType) { if (ConversionOpCodes.ContainsKey(LeftHandSide.DataType)) { Generator.Emit(ConversionOpCodes[LeftHandSide.DataType]); } } Generator.Emit(OpCodes.Rem); Result.Save(Generator); }
/// <summary> /// Sets up the command /// </summary> public override void Setup() { ILGenerator generator = MethodBase.CurrentMethod.Generator; if (LeftHandSide is FieldBuilder || LeftHandSide is IPropertyBuilder) { generator.Emit(OpCodes.Ldarg_0); } LeftHandSide.Load(generator); if (RightHandSide is FieldBuilder || RightHandSide is IPropertyBuilder) { generator.Emit(OpCodes.Ldarg_0); } RightHandSide.Load(generator); if (LeftHandSide.DataType != RightHandSide.DataType) { if (ConversionOpCodes.ContainsKey(LeftHandSide.DataType)) { generator.Emit(ConversionOpCodes[LeftHandSide.DataType]); } } generator.Emit(OpCodes.Sub); Result.Save(generator); }
public override string ToString() { return(string.Join(" ", new string[] { LeftHandSide.ToString(), ComparisonOperator.AsString(), RightHandSide.ToString() })); }
public override IProjection[] GetProjections() { return(LeftHandSide.GetProjections().Concat(RightHandSide.GetProjections()).ToArray()); }
protected override bool ThisEquals(Production other) { return(LeftHandSide.Equals(other.LeftHandSide) && this.rightHandSide.SequenceEqual(other.rightHandSide)); }
public override string ToString() { Debug.Assert(_leftHandSide != null); Debug.Assert(_rightHandSide != null); return(string.Format("{0}({1},{2})", Operator, LeftHandSide.ToString(), RightHandSide.ToString())); }