internal void ConstraintValidationStateFive(AtlasConstraintValidationQueue queue, AtlasConstraint constraint) { if (queue.Peek() != null && queue.Peek().Equals("¬")) { queue.Pop(); constraint.Constraints.Add(new AtlasConstraintOperator(AtlasLogicalOperator.Not)); } ConstraintValidationStateSix(queue, constraint); }
internal void ConstraintValidationStateFour(AtlasConstraintValidationQueue queue, AtlasConstraint constraint) { ConstraintValidationStateFive(queue, constraint); if (queue.Peek() != null && queue.Peek().Equals("∧")) { queue.Pop(); constraint.Constraints.Add(new AtlasConstraintOperator(AtlasLogicalOperator.And)); ConstraintValidationStateFour(queue, constraint); } }
internal void ConstraintValidationStateTwo(AtlasConstraintValidationQueue queue, AtlasConstraint constraint) { ConstraintValidationStateThree(queue, constraint); if (queue.Peek() != null && queue.Peek().Equals("⇒")) { queue.Pop(); constraint.Constraints.Add(new AtlasConstraintOperator(AtlasLogicalOperator.Implies)); ConstraintValidationStateTwo(queue, constraint); } }
internal void ConstraintValidationStateOne(AtlasConstraintValidationQueue queue, AtlasConstraint constraint) { ConstraintValidationStateTwo(queue, constraint); if (queue.Peek() != null && queue.Peek().Equals("<=>")) //TODO Placeholder { queue.Pop(); constraint.Constraints.Add(new AtlasConstraintOperator(AtlasLogicalOperator.Iff)); ConstraintValidationStateOne(queue, constraint); } }
public void ReadXml(XmlReader reader) { XmlSerializer featureSerializer = new XmlSerializer(typeof(AtlasFeature)); //Reading Features reader.ReadToFollowing("Features"); XmlReader featureReader = reader.ReadSubtree(); while (featureReader.ReadToFollowing("AtlasFeature")) { AddFeature((AtlasFeature)featureSerializer.Deserialize(featureReader)); } featureReader.Close(); reader.ReadToFollowing("RootFeature"); string rootName = reader.ReadElementContentAsString(); rootFeature = GetFeature(rootName); //Reading Connections if (!reader.Name.Equals("Connections")) { reader.ReadToFollowing("Connections"); } XmlReader connectionReader = reader.ReadSubtree(); while (connectionReader.ReadToFollowing("AtlasConnection")) { AtlasFeature child = GetFeature(reader["Child"]); AtlasFeature parent = GetFeature(reader["Parent"]); AtlasConnectionType type = (AtlasConnectionType)int.Parse(reader["Type"]); AddConnection(parent, child, type); } connectionReader.Close(); //Reading Constraints if (!reader.Name.Equals("Constraints")) { reader.ReadToFollowing("Constraints"); } XmlReader constraintReader = reader.ReadSubtree(); while (constraintReader.ReadToFollowing("AtlasConstraint")) { AtlasConstraintValidationQueue queue = new AtlasConstraintValidationQueue(constraintReader["Content"]); queue.Normalize(); AddConstraint(queue); } constraintReader.Close(); reader.Close(); }
internal bool AddConstraint(AtlasConstraintValidationQueue queue) { AtlasConstraint newConstraint = new AtlasConstraint(); try { ConstraintValidationStateOne(queue, newConstraint); constraints.Add(newConstraint); return(true); } catch (ArgumentException) { return(false); } }
internal void ConstraintValidationStateSix(AtlasConstraintValidationQueue queue, AtlasConstraint constraint) { if (queue.Peek() != null && queue.Peek().Equals("(")) { queue.Pop(); constraint.Constraints.Add(new AtlasConstraintOperator(AtlasLogicalOperator.LeftBracket)); ConstraintValidationStateOne(queue, constraint); if (queue.Pop().Equals(")")) { constraint.Constraints.Add(new AtlasConstraintOperator(AtlasLogicalOperator.RightBracket)); } else { throw new ArgumentException("Brackets were not properly closed"); } } else { constraint.Constraints.Add(GetFeature(queue.Pop())); } }
public bool AddConstraint(string input) { AtlasConstraintValidationQueue queue = new AtlasConstraintValidationQueue(input); return(AddConstraint(queue)); }